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 클래스를 손쉽게 확장할 수 있었다.