- 다형성(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의 모든 기능을 구현하고 있지 않기 때문에 컴파일 에러가 발생한다.
'Java > Methodology' 카테고리의 다른 글
[SOLID] 객체지향 설계 5원칙 - OCP (0) | 2021.06.17 |
---|---|
[SOLID] 객체지향 설계 5원칙 - SRP (0) | 2021.06.17 |
[OOP] 객체 지향 프로그래밍이란? - 추상화 (0) | 2021.06.17 |
[OOP] 객체 지향 프로그래밍이란? - 상속 (0) | 2021.06.17 |
[OOP] 객체 지향 프로그래밍이란? - 캡슐화 (1) | 2021.06.17 |