Java 상속 - 기능 추가하기
상속 관계인 객체에 기능을 추가해보도록 한다.
- 차량 문열기
openDoor()
기능 추가 - 수소차
HydrogenCar()
추가- 수소차 주유 기능 fillHydrogen() 수소 충전하기
src
└Student (+)
└ex3 (+)
├HydrogenCar.java (+)
├ElectricCar.java (+)
├GasCar.java (+)
├Car.java (+)
└CarMain.java (+)
Car.java
package Student.ex3;
public class Car {
public void move() {
System.out.println("차 이동하기~");
}
// 추가
public void openDoor() {
System.out.println("차 문열기~");
}
}
상속 관계인 ElectricCar, GasCar 자식 클래스는 openDoor() 메소드를 호출할 수 있게 한다. 상속 관계가 아니라면 각각 메소드를 추가해야 하지만 부모 클래스만 정의해도 모두가 동작하니 간편하다.
ElectricCar.java
package Student.ex3;
public class ElectricCar extends Car {
public void charge() {
System.out.println("차 충전하기~");
}
}
GasCar.java
package Student.ex3;
public class GasCar extends Car {
public void fillUp() {
System.out.println("기름 주유하기~");
}
}
HydrogenCar.java
- 수소차는 Car 부모 클래스로 상속 받았기 때문에 openDoor(), move() 메소드를 실행할 수 있다. 그리고 HydrogenCar 만의 fillHydrogen() 기능을 제공
package Student.ex3;
public class HydrogenCar extends Car {
public void fillHydrogen() {
System.out.println("수소 충전하기~");
}
}
CarMain.java
package Student.ex3;
public class CarMain {
public static void main(String[] args) {
System.out.println("*==전기차==*");
ElectricCar electricCar = new ElectricCar();
electricCar.move();
electricCar.openDoor();
electricCar.charge();
System.out.println("*==가솔린차==*");
GasCar gasCar = new GasCar();
gasCar.move();
gasCar.openDoor();
gasCar.fillUp();
System.out.println("*==수소차==*");
HydrogenCar hydrogenCar = new HydrogenCar();
hydrogenCar.move();
hydrogenCar.openDoor();
hydrogenCar.fillHydrogen();
}
}
실행 결과
*==전기차==*
차 이동하기~
차 문열기~
차 충전하기~
*==가솔린차==*
차 이동하기~
차 문열기~
기름 주유하기~
*==수소차==*
차 이동하기~
차 문열기~
수소 충전하기~
extends 상속 개념을 이용하여 차종의 openDoor() 를 손쉽게 추가하고, 수소차 HydrogenCar 클래스를 손쉽게 확장할 수 있었다.