본문 바로가기

Java/Methodology

[OOP] 객체 지향 프로그래밍이란? - 다형성

  • 다형성(Polymorphism)

하나의 객체가 여러가지 타입을 가질 수 있다.
하위클래스는 상위클래스로 참조될 수 있다.

역시 글로만 정리하니 이해가 되질 않는다.
아래의 코드를 보자.

public class Vehicle
{

    private String manufacturer;
    private String modelName;

}

public class Motorcycle extends Vehicle
{

    private String engineName;
    private String fuelType;

}

public class Bicycle extends Vehicle
{}

Vehicle 클래스와 이를 상속하고 있는 Motorcycle이 있다.
그러면 사용하는 쪽의 코드를 확인해보자.

Vehicle vehicle = new Vehicle();                  // 가능
Motorcycle motorcycle = new Motorcycle();         // 가능
Vehicle vehicleMotor = new Motorcycle();          // 가능
Vehicle vehicleBic = new Bicycle();               // 가능
Motorcycle motorcycleVehicle = new Vehicle();     // 불가능

Vehicle은 자신뿐만 아니리 Motorcycle, Bicycle로도 생성될 수 있다.

Motorcycle, Bicycle은 모두 Vehicle을 상속(확장)하고 있으므로 Vehicle의 모든 기능을 포함하고 있기 때문이다.
하지만 반대의 경우 Vehicle은 Motorcycle의 모든 기능을 구현하고 있지 않기 때문에 컴파일 에러가 발생한다.