이번에는 인스턴스 객체의 배열형 타입 관리의 케이스와 마찬가지로, 인터페이스 역시 구현 객체를 배열 타입으로 관리해 보는 예제를 확인해 보도록 하겠습니다. 우선, 기존 예제에서 작성되었던 Car 클래스를 살펴보겠습니다.
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();
System.out.println("-------");
}
}
public class ExampleMain {
public static void main(String[] args) {
Car myCar = new Car();
myCar.run();
myCar.frontLeftTire = new KumhoTire();
myCar.frontRightTire = new KumhoTire();
myCar.run();
}
}
위의 코드에서 인터페이스 Tire를 구현하는 객체의 변수가 총 네 개인데, 이 변수명을 일일이 지정해 타이핑해야 하는 번거로움이 있다는 점을 확인할 수 있습니다. 더불어 이 인터페이스 타입 변수에서 roll( )이라는 메서드를 호출할 때도, 네 개의 변수에서 일일이 동일한 메서드를 호출해야 하는 상황입니다.
이러한 불편하고 반복적인 코드 작성을 최소화하기 위해서 인터페이스 타입의 배열 객체를 사용해 보도록 하겠습니다.
public class Car {
Tire[] tires = {
new HankookTire(),
new HankookTire(),
new HankookTire(),
new HankookTire()
};
void run() {
for(Tire tire : tires) {
tire.roll();
}
System.out.println("******");
}
}
Tire타입의 배열 객체 tires를 선언하고, 여기에 구현 객체 네 개를 선언했습니다. 그리고 for문을 이용해 run( ) 메서드 역시 간단하게 바꾸어 줬습니다. 이제 실행 클래스에서 개별 구현 클래스 인스턴스를 호출할 때는, tires[n] 형태로 호출할 수 있게 되었습니다. 실행 코드를 보겠습니다.
public class ExampleMain {
public static void main(String[] args) {
Car myCar = new Car();
myCar.run();
myCar.tires[0] = new KumhoTire();
myCar.tires[1] = new KumhoTire();
myCar.run();
}
}
/* 출력
HankookTire rolls
HankookTire rolls
HankookTire rolls
HankookTire rolls
******
KumhoTire rolls
KumhoTire rolls
HankookTire rolls
HankookTire rolls
******
*/
'Programming > JAVA' 카테고리의 다른 글
인터페이스(10) - 객체 타입체크(instanceof) (0) | 2023.03.27 |
---|---|
인터페이스(9) - 인터페이스 파라미터의 다형성 & Casting (0) | 2023.03.26 |
인터페이스(8) - 인터페이스의 타입 변환과 다형성 2 (0) | 2023.03.24 |
인터페이스(8) - 인터페이스의 타입 변환과 다형성 1 (0) | 2023.03.23 |
인터페이스(7) - 인터페이스의 구현과 사용 2 : 디폴트, 정적 메서드 (0) | 2023.03.22 |