Java

Java / 다형성

Dear-J 2025. 2. 23. 20:07

객체지향 프로그래밍의 꽃

 

한 객체가 여러 타입의 객체로 취급될 수 있는 능력

 

다형적 참조

부모 타입의 변수가 자식 인스턴스 참조

>> 부모는 자식을 품을 수 있다.

 

자식 클래스에 있는 메서드를 호출하고 싶을 때?

>> 캐스팅 필요

 

다형성과 캐스팅

(타입)처럼 괄호와 그 사이에 타입을 지정하면 참조 대상을 특정 타입으로 변경 가능

 

업 캐스팅은 생략 가능(매우 자주 사용하기 때문), 다운 캐스팅은 불가능

 

다운 캐스팅과 주의점

부모 타입의 변수가 부모 인스턴스를 참조할 경우

>> 다운 캐스팅을 해도 자식 타입의 인스턴스가 메모리 상에 존재하지 않아 기능을 사용할 수 없음

>> 사용할 수 없는 타입으로 다운캐스팅하는 경우 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