JAVA/JAVA2

[java2] #03 - 다형성, instanceof 연산자, Casting (Upcasting, Downcasting)

yoonddo 2022. 7. 9. 16:16

1. 다형성(polymorphism) 이란

 

 - 하나의 객체가 여러 자료형 타입을 가질 수 있는 것을 다형성(polymorphism)이라고 한다.

 - 부모 클래스의 참조변수로 자식 클래스 타입의 인스턴스를 참조할 수 있다.

 - 오버라이딩은 상속을 통해 같은 이름의 메소드를 서로 다른 내용으로 구현한다는 점에서

객체 지향의 다형성을 실현한다고 볼 수 있다.

 


 

2. instance of 연산자

 - 자바에서는 참조변수가 참조하고있는 인스턴스가 어떤 클래스인지 구분하기위해 instance of 염산자를 사용한다.

- instanceof는 다음과 같이 사용된다.

참조변수 instance of 클래스명

- 왼쪽 참조변수가 참조하고 있는 인스턴스 타입이 오른쪽의 클래스와 같으면 true를 반환하고, 아니면 false를 반환한다.

- 참조변수가 null을 가리키면 false를 반환한다.

 


3. 캐스팅(Casting)이란

: 타입을 변환하는 것을 의미하며 형변환이라고도 한다. 부모와 자식 클래스간(상속된 관계)에 서로 형변환이 가능하다.

 

 - 업캐스팅(Upcasting)

: 업캐스팅이란 차식 클래스의 객체가 부모 클래스 타입으로 형변환 되는 것을 말한다.

 

 - 다운캐스팅(Downcasting)

: 업캐스팅 된 것을 다시 원상태로 돌리는것을 다운캐스팅이라고 하며

다운캐스팅을 위해서는 반드시 업캐스팅이 선행 되어야 하며 타입을 명시적으로 지정해줘야한다.


day01 패키지에 상속관계의 클래스를 각각 생성.
상위클래스(부모클래스) Car
Car클래스를 상속받은 하위클래스(자식클래스) SuperCar
Casting을 한 뒤 instanceof 연산자를 이용해 참조변수가 참조하고있는 인스턴스의 클래스 확인