https://www.youtube.com/watch?v=vlkOwD828yg&list=PLq8wAnVUcTFX4E2NplMvJfqlcgAeF_BxK&index=19
A라고 정의되어 있는 범주까지만 볼 수 있는 상태에서 a.f6();이 에러발생함
사용하려면 형변환을 통해 사용할 수 있음 ((B)a).f6(); 이렇게하면 f6(), f7()까지 메소드가 확인이됨
(형식변환을 먼저 하기위해 ()를 한겹 더 씌움, 안하면 . 이 먼저 계산 된다. )
a.f2()는 B클래스에서 f1~f5까지 보이게 되고 그 중 f2가 없기 때문의 부모 클래스의 메소드인 f2가 호출된다.
f2는 f3을 호출하게 되고 여기서 f3은 오버라이한 메소드가 우선시 되기 때문에 B클래스의 f3이 호출된다.
b.f2();도 마찬가지다.
a.f4() -> B에 없기 때문에 A클래스의 f4() 호출 -> 오버라이드된 f5() 호출 -> 다시 A클래스의 f4()호출
무한루프 돌게됨
f4() -> f5() -> f2() -> f3()
'Java 코드연습 > 상속. 메소드의 관계' 카테고리의 다른 글
[뉴렉처] 메소드 동적 바인딩 (0) | 2021.10.31 |
---|---|
[뉴렉처] 참조형식과 호출되는 메소드의 관계 (0) | 2021.10.31 |