728x90
접근 제한자
- protected는 같은 패키지에 있는 클래스거나 상속 관계일 경우에 클래스에 접근을 허용한다.
D는 A 를 상속하지만 다른 패키지에 있기 때문에 D는 A의 protected 생성자에 접근할 수 없다. 그러나 상속 관계로는 접근이 가능하기 때문에 super() 는 허용이 된다. - 클래스 A, D 는 상속 관계지만 서로 다른 패키지에 있다.
타입 변환과 다형성
- 다형성이란 같은 타입이지만 실행 결과가 다양한 객체를 이용할 수 있는 성질을 말한다.
- 자바는 다형성을 위해 부모 클래스로 타입 변환을 허용한다.
- 타입 변환이란 데이터 타입을 다른 데이터 타입으로 변환하는 행위를 말한다.
-
- 자동 타입 변환이란 프로그램 실행 도중에 자동으로 타입 변환이 일어나는 것을 말한다.
- 자식은 부모의 것을 상속받기 때문에 부모와 동일하게 취급될 수 있게 하는 것.자동 타입 변환
child 참조 변수와 parent 참조 변수 등등 비교 결과는 true 다.
타입 변환만 일어났을 뿐 둘다 같은 객체를 참조하고 있다.
여기서 중요한 포인트는 비록 같은 객체를 잠조하고 있어도
부모 타입으로 변환이 일어나면 접근 가능한 멤버는 부모 클래스 멤버로만 한정된다.
예외는 자식 클래스에 오버라이딩된 메서드가 있을 경우 자식의 것이 호출된다.
필드의 다형성
- 자동 타입 변환이 필요한 이유. 왜 부모 타입을 굳이 형변환을 해서 사용할까?
- 다형성을 구현하는 기술적인 방법 때문
- 필드의 다형성이란 필드의 타입은 변함이 없지만, 실행 도중에 어떤 객체를 필드로 저장하느냐에 따라 실행 결과가 달라질 수 있다.
- 객체는 다른 객체로 교체될 수 있어야 한다.
- 상속과 오버라이딩, 그리고 타입 변환을 이용한다.
매개변수의 다형성
강제 타입 변환(Casting)
- 부모 타입을 자식 타입으로 변환하는 것
- 부모 타입을 자식 타입으로 변환하는 것이 아니라 자식 타입 (자동 변환)→ 부모 타입 (강제 변환)→ 자식 타입
- 의 경우를 말한다.
- 자식 타입을 부모 타입으로 형변환 했다가 자식 타입에 선언된 필드와 메서드가 필요한 경우가 발생할 수 있다. 이때 강제 타입 변환을 사용하면 된다.
- instance of
부모 타입의 변수가 부모 객체를 참조할 경우 자식 타입으로 변환할 수 없다. cast 할 수 없다는 에러가 발생한다.
변수 Parent a 만 놓고 보면 자식 타입이 자동 변환되어 부모 타입이 된건지 아니면 그냥 부모 타입인지 알 수 없다.
그래서 강제 변환을 할땐 instanceof 연산자를 사용해 예외 발생을 피해야 한다.
728x90
'Programming > Java' 카테고리의 다른 글
[F-Lab 모각코 챌린지 14일차] Java : 불변객체 (1) | 2023.06.16 |
---|---|
[F-Lab 모각코 챌린지 13일차] Java : 인터페이스와 추상클래스 (0) | 2023.06.15 |
[F-Lab 모각코 챌린지 10일차] TIL : 자바의신 10장 (0) | 2023.06.12 |
[F-Lab 모각코 챌린지 9일차] TIL : 자바의신 9장 (0) | 2023.06.11 |
[F-Lab 모각코 챌린지 8일차] TIL : 자바의신 8장 (0) | 2023.06.10 |
댓글