JAVA
[OOP, Java] 다형성 & 상속 & 객체 변수 형변환 그림으로 정리
미소서식지
2023. 9. 11. 23:37
본 포스팅은 자바의 정석과 스프링 입문을 위한 자바 객체 지향의 원리와 이해를 참고하여 만들어졌습니다.
다형성
OOP에서 다형성이란 여러 가지 형태를 가질 수 있는 능력을 의미한다.
자바에서는 한 타입의 참조변수로 여러 타입의 객체를 참조할 수 있도록 함으로써 다형성을 프로그램적으로 구현해였다.
구체적으로 말하면,
조상 클래스 타입의 참조변수로 자손클래스의 인스턴스를 참조할 수 있도록 하였다
public class Driver {
public static void main(String[] args) {
Penguin pororo = new Penguin();
pororo.name = "뽀로로";
pororo.habitat = "남극";
pororo.showName();
pororo.showName("초보람보");
pororo.showHabitat();
Animal pingu = new Penguin(); // 다형성
pingu.name = "핑구";
pingu.showName();
}
}

cf.
자식 -> 부모로 형변환 할 때는 묵시적 형변환이어도 되는 이유?
자식 클래스에서 다룰 수 있는 멤버의 개수가 부모 클래스의 인스턴스가 가지고 있는 멤버의 개수보다 적기 때문에 문제가 되지 않는다.
그러나 부모 -> 자식의 경우 참조변수가 다룰 수 있는 멤버의 개수가 늘어나느 것이므로 실제 인스턴스의 멤버 개수보다 참조변수가 사용할 수 있는 멤버의 개수가 더 많아지기 때문에 문제가 발생할 가능성이 있다.