안녕하세요 알통몬입니다. 공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!! 포스팅 내용이 찾아주신 분들께 도움이 되길 바라며 더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^
|
매개값을 다양화하기 위해서 상속에서는 매개 변수를 부모 타입으로 선언하고 호출할 때에는 자식 객체를 대입했었습니다. 이번엔 매개 변수를 인터페이스 타입으로 선언하고 호출할 때에는 구현 객체를 대입합니다.
ex)
public class Driver {
public void drive(Vehicle vehicle) {
vehicle.run();
}
}
public interface Vehicle {
public void run();
}
}
위 같은 코드가 있다고 할 때
Bus 클래스가 구현 클래스라하면 아래와 같이 Driver 의 drive() 메서드를 호출할 때 Bus 객체를 생성해서 매개 값으로 줄 수 있습니다.
drive()메서드는 Vehicle 타입을 매개 변수로 선언했지만, Vehicle을 구현한 Bus 객체가 매개 값으로 사용되면 자동 타입 변환이 발생합니다.
매개 변수의 타입이 인터페이스일 경우, 어떠한 구현 객체도 매개값으로 사용할 수 있고,
어떤 구현 객체가 제공되느냐에 따라 메서드의 실행 결과는 다양해짐 =>매개 변수의 다형성
예제
매개 변수의 인터페이스화
public class Driver {
public void drive(Vehicle vehicle) {
vehicle.run();
}
}
인터페이스
public interface Vehicle {
public void run();
}
구현 클래스
public class Bus implements Vehicle {
@Override
public void run() {
System.out.println("버스가 달립니다.");
}
}
구현 클래스2
public class Taxi implements Vehicle {
@Override
public void run() {
System.out.println("택시가 달립니다.");
}
}
실행 클래스
public class DriverExample {
public static void main(String[] args) {
Driver driver = new Driver();
Bus bus = new Bus();
Taxi taxi = new Taxi();
driver.drive(bus); //자동 타입 변환
driver.drive(taxi);
}
}
'자바' 카테고리의 다른 글
JAVA 자바 인터페이스 상속 (0) | 2017.03.13 |
---|---|
JAVA 자바 인터페이스 강제 타입 변환 Casting 과 객체 타입 확인 instancof (0) | 2017.03.13 |
JAVA 자바 인터페이스 필드의 다형성 // 인터페이스 배열로 구현 객체 관리 (0) | 2017.03.13 |
JAVA 자바 인터페이스: 자동 타입 변환(Promotion) (0) | 2017.03.13 |
JAVA 자바 인터페이스 사용 추상 메서드 사용, 디폴트 메서드 사용, 정적 메서드 사용 (0) | 2017.03.13 |