업캐스팅의 일반 원칙
- 생성자를 먼저 확인하자. 자식이 태어나기 전에는 무조건 부모가 태어남!
특별하게 super(___)가 없다면 매개 변수가 없는 기본 생성자를 호출함
- 메서드는 무조건 자식이 재정의 한것을 사용한다
- 자식의 메서드에서 super를 불렀다면 부모의 것을 명시적으로 호출함
하지만! 예외가 있다.. 그것이 바로 “Hiding”
Java의 하이딩(Hiding)
부모의 static 정적 메서드의 경우 위의 일반 원칙에 적용을 받지 않는다.
이를 hiding이라 하고 글자 그대로 숨긴다는 뜻이다.
Parent 클래스에서 static A() {출력:부모} 가 있고
Child 클래스에 똑같이 static A() {출력:자식}이 있다면
이때 처음 생성된 메서드를 실행함
class P {
public static void print() {
System.out.print("Parent");
}
}
class C extends P {
public static void print() {
System.out.print("Child");
}
}
public class Main {
public static void main(String[] args) {
P myVar = new C();
myVar.print(); // static 메서드는 클래스 타입에 따라 호출됨
}
}Parent가 출력됩니다.
Share article