티스토리 뷰
부모 클래스의 print()함수가 자식 클래스에서 오버라이딩/ 재정의 되어 있을 때
부자되세요 부->자
1. Parent p = new Child();
- 자식은 -> 부모로 형변환 가능
- 만들어지는 클래스 타입은 new 이후 오른쪽 ->
- 할당되는 참조 변수의 유형은 <- new 왼쪽
- Parent 객체 참조 변수에 담긴다. <- Child() 생성자로 Child 클래스가 만들어져
- memory 상에는
Object - Parent - Child
클래스들을 위한 공간들이 위에서부터 생기고
p 변수는 Parent의 주소를 참조한다!! - 1) 따라서 p 변수는 Parent 공간에서 메소드들을 찾으며, Parent 공간에서 못찾으면 순차적으로 위로 간다.
-
부모 참조변수 p를 통해 자식 메소드 호출 불가능!!
- 2) 예외>
p.print();
// 자식 클래스에서 오버라이딩 한대로 출력됨!!- 메모리 상에 Child 공간이 있기 때문임
- 2) 예외>
2. Child c = new Child();
-
자식 클래스가 상속받은 메소드를 오버라이딩 했더라도.
super.print()
형식으로 부모의 메소드 기능을 사용할 수 있다.
Child c = new Child();
-> 자식 참조 변수 c로 부모 메소드 호출 가능 ->super
-
상속 예외!! 1) private 2) 부모의 생성자
3. Child c3 = (Child) p;
- 형변환
- 부모 참조변수 p로 자식 클래스를 참조하고 싶을 때!!!
- 메모리상 Parent 밑에 있는 Child 영역도 p 변수가 접근 가능해진다.
'Java > Java 사용법들' 카테고리의 다른 글
[Java] 자바 스트링상수!!! (0) | 2021.01.28 |
---|---|
[Java] String Format과 16진수를 10진수로 변환하기 (0) | 2021.01.23 |
[Java] Singleton Pattern (0) | 2021.01.23 |
[Java] 자바 기술 면접 질문들 (0) | 2021.01.21 |
[Java] Variable Type, Java의 Primitive Type (0) | 2021.01.19 |
댓글