-
다형성(Polymorphism)JAVA 2023. 3. 2. 20:45
다형성 : 사용 방법은 동일하지만 실행 결과가 다양하게 나오는 성질
- 하위 클래스 타입의 객체(인스턴스)를 상위 클래스 타입의 변수로 참조 가능!!!!!!!!!!!!!
- 자바는 기본적으로 동일한 참조 타입의 객체를 생성해야 하지만 경우에 따라 다른 참조 타입으로 객체를 생성하기도 한다.
타입 변환
- 클래스는 참조 타입의 자료형으로 사용될 때 타입 변환이 가능하다.
- 클래스의 타입 변환은 상송 관계의 클래스 사이에서 발생한다.
업캐스팅(up casting)
- 하위 클래스 객체를 상위 클래스 참조 타입의 변수로 선언하는 것
- 컴파일러가 하위 클래스 객체를 상위 클래스 참조 타입의 변수로 인식
Cat cat = new Cat(); //Cat은 Animal의 자식 클래스Animal animal = cat; //부모 클래스로 자동 타입 변환- 타입 변환이 되어도 참조하는 객체(자식 객체)는 동일하다.
- 상위 클래스에 정의된 메소드 호출 시 각각의 하위 클래스에 재정의된 메소드가 실행된다.
다운캐스팅(down casting)
- 상위 클래스 객체를 하위 클래스 참조 타입으로 형변환하는 것
- 컴파일러가 상위 클래스 타입의 변수로 인식했던 하위 클래스 객체를 다시 하위 클래스 타입의 변수로 인식
Animal a = new Dog(); //컴파일러는 Dog 객체를 Animal 참조 타입으로 인식Dog d = (Dog) a; //컴파일러가 Animal 타입으로 인식했던 Dog 객체를 다시 Dog 타입으로 인식
객체 타입 확인
instanceof 연산자
boolean result = 객체 instanceof 타입;1. 참조변수가 참조하는 인스턴스의 객체 타입을 검사할 때 사용
2. 타입 변경 후 차별적인 작업을 수행하기 위함.
if(s instanceof Circle) {Circle c = (Circle) s;System.out.println("반지름이 " + c.r + "인 원의 넓이는 " + c.res);}- Java 12 버전부터 연산 결과가 true이면 우측 타입 변수를 사용할 수 있는 기능을 지원한다.
if(parent instanceof Child child) {//child 변수 사용}
'JAVA' 카테고리의 다른 글
인터페이스(Interface) (0) 2023.03.02 추상 클래스(abstract class) (0) 2023.03.02 final 키워드 (0) 2023.03.02 접근 제한자(access modifier; 접근 제어자) (0) 2023.03.02 스레드(Thread) (0) 2023.03.02