class SuperSibal {
public void melong1() {
System.out.println("슈퍼시발 메롱1");
this.melong2();
}
public void melong2() {
System.out.println("슈퍼시발 메롱2");
}
}
class SubSibal extends SuperSibal {
@Override
public void melong1() {
System.out.println("서브시발 메롱1");
super.melong1();
}
@Override
public void melong2() {
System.out.println("서브시발 메롱2");
}
}
public class Sibal {
public static void main(String[] args) {
SubSibal mSubClass = new SubSibal();
mSubClass.melong1();
}
}
서브시발 메롱1
슈퍼시발 메롱1
슈퍼시발 메롱2
일줄 알았는데
결과는 아래처럼 막줄이 서브시발 메롱2로 나온다
서브시발 메롱1
슈퍼시발 메롱1
서브시발 메롱2
닥쳐병신아 java this하나 쩔쩔매면 자바스크립트가면 자살하겠네.
저 메소드를 호출한 아이가 누군지에 따라 저렇게 나오는거 아님?
오버라이딩
동적바인딩. this값이 런타임에 결정되는거지. this값으로 메시지의 리시버가 들어간다. 위 코드에선 리시버가 SubSibal지. 그래서 this가 SubSibal로 해석되는거야. super는 따로 설명 안해도 될 것 같고, 나도 예전에 고민했던 부분이다. 너도 고민해서 니껄로 만들어.