업캐스팅 : 자식이 부모 타입으로 ! ---> 항상 가능 --> 컴파일러가 해준다
다운캐스팅: 부모가 자식타입으로 ! ---> 안될때 있음 --> 수동으로
업캐스팅
자식 --> 부모로
컴파일러가 매번 붙여서 오류가 안난거다
A a = (A) new B();
다운캐스팅
부모-> 자식으로
메모리로 이해하는 다운캐스팅 --> 맨 마지막 안됨
왼쪽은 자식타입 = 부모타임 이렇게 하니까 안됨
오른쪽은 C가 없음
선언한 타입의 멤버만 사용가능하다.
위에는 B로 선언해서 B의 값에 접근한다
아래에는 A로 선언해서 B의 값에 접근 못한다.
==> 왼쪽이 중요하다
첫번째는 E
E의 값만 접근 가능 //3, E클래스
두번째는 F
F 값 접근 가능, E값 접근 가능
다형성 타입
왼쪽은 부모 = 오른쪽은 자식
자식값 접근 안된다. 이미 부모꺼로 가리키고 있다.
왼쪽이 중요!!!
첫번째: A
두번째 : A B
'java > 자바' 카테고리의 다른 글
chap[10-4] 필드와 static 멤버 (필드_메서드)의 중복 (0) | 2022.09.11 |
---|---|
chap[10-3] 메서드 오버라이딩 (0) | 2022.09.11 |
[Ch10] 클래스의 상속 (0) | 2022.08.22 |
[Ch09] 접근지정자 (0) | 2022.08.22 |
Ch08 외부구성요소 (패키지, 임포트, 외부클래스) (0) | 2022.08.14 |