상속 관계의 장점을 알아보기 위해, 다음 기능을 추가해보자.
openDoor()
) 기능을 추가해야 한다.HydrogenCar
)를 추가해야 한다.fillHydrogen()
기능을 통해 수소를 충전할 수 있다.package extends1.ex3;
public class Car {
public void move() {
System.out.println("차를 이동합니다.");
}
// 추가
public void openDoor() {
System.out.println("문을 엽니다.");
}
}
모든 차량에 문열기 기능을 추가할 때는 상위 부모인 Car
에 openDoor()
기능을 추가하면 된다. 이렇게 하면 Car
의 자식들은 해당 기능을 모두 물려받게 된다.
package extends1.ex3;
// 추가
public class HydrogenCar extends Car {
public void fillHydrogen() {
System.out.println("수소를 충전합니다.");
}
}
수소차를 추가했다. Car
를 상속받은 덕분에 move()
, openDoor()
와 같은 기능을 바로 사용할 수 있다.
수소차는 전용 기능인 수소 충전(fillHydrogen()
) 기능을 제공한다.
package extends1.ex3;
public class CarMain {
public static void main(String[] args) {
ElectricCar electricCar = new ElectricCar();
electricCar.move();
electricCar.charge();
electricCar.openDoor();
GasCar gasCar = new GasCar();
gasCar.move();
gasCar.fillUp();
gasCar.openDoor();
HydrogenCar hydrogenCar = new HydrogenCar();
hydrogenCar.move();
hydrogenCar.fillHydrogen();
hydrogenCar.openDoor();
}
}
상속 관계 덕분에 중복은 줄어들고, 새로운 수소차를 편리하게 확장(extend)한 것을 알 수 있다.