본문 바로가기

Backend/Java

[인프런] 다형성, polymorphism, 개념, 학습

[1]: 다형성이란?
다형성이란 다양한 형태 또는 특성을 가진다는 의미.
자바와 같은 객체 지향 언어에서의 의미는 부모 클래스를 상속받은 자식 클래스의 인스턴스가 부모의 객체로도 사용되고, 뿐만 아니라 자식 클래스의 객체로도 사용될 수 있는 다양한 상황을 의미한다.

[2]: 예시
부모 클래스 Bird가 있고, 이를 상속받은 자식 클래스 Parrot이 있다고 가정하자. 이때, "앵무새가 말을 하네.." 사람들이 이렇게 말할 수 있다.
그런데 앵무새는 새이기 때문에 "새가 말을 하네"라고도 말할 수 있다.
[3]: 결론
정리하면 하위 클래스의 인스턴스(객체)는 보다 위인 상위 클래스의 인스터스(객체)로도 사용될 수 있다.
그런데 그 반대는 안 된다.
왜냐하면 "앵무새"는 분명 그 상위인 "새"라고 말할 수 있지만, 새는 종류가 많기 때문에 모든 새가 앵무새는 아니다.

따라서 상위(부모) 클래스의 인스턴스(객체)는 하위(자식) 클래스의 인스턴스(객체)로 사용될 수 없다.