객체지향 프로그래밍의 꽃
한 객체가 여러 타입의 객체로 취급될 수 있는 능력
다형적 참조
부모 타입의 변수가 자식 인스턴스 참조
>> 부모는 자식을 품을 수 있다.
자식 클래스에 있는 메서드를 호출하고 싶을 때?
>> 캐스팅 필요
다형성과 캐스팅
(타입)처럼 괄호와 그 사이에 타입을 지정하면 참조 대상을 특정 타입으로 변경 가능
업 캐스팅은 생략 가능(매우 자주 사용하기 때문), 다운 캐스팅은 불가능
다운 캐스팅과 주의점
부모 타입의 변수가 부모 인스턴스를 참조할 경우
>> 다운 캐스팅을 해도 자식 타입의 인스턴스가 메모리 상에 존재하지 않아 기능을 사용할 수 없음
>> 사용할 수 없는 타입으로 다운캐스팅하는 경우 ClassCastException 예외 발생
업캐스팅의 경우엔 객체를 생성하면 해당 타입의 상위 부모 타입은 모두 함께 생성되기 때문에 안전함
>> 캐스팅 생략 가능!
instanceof
변수가 참조하는 인스턴스의 타입을 확인하는 키워드
다형성과 메서드 오버라이딩
오버라이딩 된 메서드가 항상 우선권을 가진다
부모 타입의 변수가 자식 인스턴스를 참조하는 경우
>> 부모 타입에 있는 메서드를 실행하려고 하다가 자식 타입에 오버라이딩 되어있는 메서드를 호출해서 실행
'Java' 카테고리의 다른 글
Java / 다형성과 설계 (0) | 2025.02.23 |
---|---|
Java / 추상 클래스와 인터페이스 (0) | 2025.02.23 |
Java / 상속 (0) | 2025.02.23 |
Java / final (0) | 2025.02.22 |
Java / 자바 메모리 구조와 static (0) | 2025.02.22 |