자바

JAVA 자바 인터페이스 필드의 다형성 // 인터페이스 배열로 구현 객체 관리

알통몬_ 2017. 3. 13. 10:16
반응형

상속에서 다형성은 이미 공부하였습니다.

필드의 다형성

예제

인터페이스

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();
}
}

실행 결과는 위 예제와 같습니다.


반응형