Java 코드연습/상속. 메소드의 관계

[뉴렉처] 메소드의 관계 연습하기

양상추상츄 2021. 10. 31. 00:47

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()