반응형
상속에서 다형성은 이미 공부하였습니다.
필드의 다형성
예제
인터페이스
public interface Tire {
public void roll();
}
구현 클래스
public class HankookTire implements Tire {
@Override
public void roll() {
System.out.println("한국 타이어가 굴러갑니다.");
}
}
구현 클래스
public class KumhoTire implements Tire {
@Override
public void roll() {
System.out.println("금호 타이어가 굴러갑니다.");
}
}
다형성을 보여주는 클래스
public class Car {
Tire frontLeftTire = new HankookTire();
Tire frontRightTire = new HankookTire();
Tire backLeftTire = new HankookTire();
Tire backRightTire = new HankookTire();
void run() {
frontLeftTire.roll();
frontRightTire.roll();
backLeftTire.roll();
backRightTire.roll();
}
}
실행 클래스
public class CarExample {
public static void main(String[] args) {
Car myCar = new Car();
myCar.run();
myCar.frontLeftTire = new KumhoTire();
myCar.frontRightTire = new KumhoTire();
myCar.run();
}
}
인터페이스 배열로 구현 객체 관리
위 예제에서
Tire frontLeftTire = new HankookTire();
Tire frontRightTire = new HankookTire();
Tire backLeftTire = new HankookTire();
Tire backRightTire = new HankookTire();
이 부분을 아래처럼 배열로 관리할 수 있습니다.
Tire[] tires = {
new HankookTire(),
new HankookTire(),
new HankookTire(),
new HankookTire()
};
구현 객체들을 배열로 바꾸면 Car.java와 CarExample.java의 코드가 조금 바뀝니다.
public class Car {
Tire[] tires = {
new HankookTire(),
new HankookTire(),
new HankookTire(),
new HankookTire()
};
void run() {
for(Tire tire : tires) {
tire.roll();
}
}
}
public class CarExample {
public static void main(String[] args) {
Car myCar = new Car();
myCar.run();
myCar.tires[0] = new KumhoTire();
myCar.tires[1] = new KumhoTire();
myCar.run();
}
}
실행 결과는 위 예제와 같습니다.
반응형
'자바' 카테고리의 다른 글
JAVA 자바 인터페이스 강제 타입 변환 Casting 과 객체 타입 확인 instancof (0) | 2017.03.13 |
---|---|
JAVA 자바 인터페이스 매개 변수의 다형성 (0) | 2017.03.13 |
JAVA 자바 인터페이스: 자동 타입 변환(Promotion) (0) | 2017.03.13 |
JAVA 자바 인터페이스 사용 추상 메서드 사용, 디폴트 메서드 사용, 정적 메서드 사용 (0) | 2017.03.13 |
JAVA 자바 인터페이스 구현 익명 구현 객체와 다중 인터페이스 구현 클래스 (0) | 2017.03.13 |