<상황>
A <- B <- C 대로 상속,
A의 메소드 a
B의 메소드 a, b
C의 메소드 a, b, c
➡️a를 재정의(Override) / C는 a와 b를 재정의
업캐스팅
A one = new C();
B two = new C();
C three = new C();
C를 누구의 관점으로 보느냐에 따라 접근할 수 있는 요소의 범위가 달라짐!!!!
1) 상속
- 객체들 사이에 명확한 계층 구조가 있을 때
- 여러 클래스에서 공유하는 공통 코드가 많아 이를 부모 클래스에서 한 번에 관리하고 싶을 때
2) 인터페이스
- 상속 관계가 없는 클래스들이 공통된 행위를 해야할 때
- 유연성이 필요할 때 ( 구현 클래스가 바뀌어도 다른 코드에 영향 X )