A extends B 이고
B안에 outer() 가 있어
outer안에서 inner를 호출해.
이때 inner는 B에도 구현되어있고
A에서도 오버라이드했어.
이 경우 outer에서 인텔리제이로 커맨드 클릭해서 inner를 들어가보면
B의 inner로 보내주더라?
하지만 (심지어 B가 abstract라면 더더욱) A의 인스턴스가 outer를 호출하면
inner는 A의 것이 호출된단 말임.
즉 코드를 살필때 커맨드클릭으로 코드를 파악하는건 완전하지 않다는 뜻이지.
매번 오버라이드를 걱정하면서 코드 봐야함?
B안에 outer() 가 있어
outer안에서 inner를 호출해.
이때 inner는 B에도 구현되어있고
A에서도 오버라이드했어.
이 경우 outer에서 인텔리제이로 커맨드 클릭해서 inner를 들어가보면
B의 inner로 보내주더라?
하지만 (심지어 B가 abstract라면 더더욱) A의 인스턴스가 outer를 호출하면
inner는 A의 것이 호출된단 말임.
즉 코드를 살필때 커맨드클릭으로 코드를 파악하는건 완전하지 않다는 뜻이지.
매번 오버라이드를 걱정하면서 코드 봐야함?
너 공부를 좀 종교처럼 하는거같음
엥 오버라이드 했으면 A의 inner로 보내줄텐데...B의 outer에서 클릭한거 아님?
B의 outer에서 클릭했어
그러면 맞는거잖아 B입장에서 보면 A가 존재하는걸 모르니까
B의 인스턴스말고, A의 인스턴스에서부터 호출 타고들어가도 B의 inner로 도착함. 애초에 B의 outer에 도착했을때 해당 메소드를 누가 호출했는지에 대한 정보는 사라질거고
근데 A의 인스턴스가 outer를 호출하는상황에서 디버그를 하자면 A의 inner로 들어가야하잖아. 인텔리제이만 따라가서는 디버그를 할수가 없는셈이지
제대로 디버그하면 A로 가는거 맞아 이건 사람 문제임
아니 디버그 누르면 a로가고 근데 디버그말고 자기가직접코드읽으면서 뇌버그하려고하면 인텔리제이 커맨드클릭으로하면 B로 가버린다고 이걸 이해 못함?
이게 너말대로 문제 없다고 치자. 그럼 코드읽을때 매번수동으로 오버라이드 있을지 생각하면서 수동으로 들춰봐야함?
그런 논리면 A가 들어올지 B를 상속한 또다른 C가 들어올지도 모르는거잖아
맞음. 나는 원하는게 그래서 커맨드클릭했을때 오버라이딩된 메소드들도 모두 선택지로 제공됐음 좋겠어. 어디로 가고싶냐고. 지금은 무조건 B로 가버려
막말로 생각없이 코드읽으면서 "이거 이상한데~~ 보너스점수 100점이 어디서들어간거지? 그런 코드 없는데" 하다가 뒤늦게 오버라이드된 메소드가 있다는걸 발견하고선 시간날릴수 있는거 아니야?
글킨 한데 사실 그런 경우는 설계 문제니까
고마워. 너 좀 현업자인거같아보인데 현업자의 이야기를 듣고나니까 안심이 된다. 보통은 이런일로 헷갈일 일이 많지 않나보구나. 그래도 조심해야겠어. 사실 내가 오늘 당했어 후후후... 뭐 내 문제겠지만
난 오늘 당하고나서 무슨 기분이었냐면 히익!!! 사실 이거 언제나 체크해야하는 상황이었던거야??? 자동으로 체크가 안되니까 수동으로 매번 진행했어야하는 일인것인가!! 하면서 간담이 서늘해지더라구
항상 체크하긴 해야 해 설계가 제대로 된 경우보다 개판인 경우가 많거든...