Spring/Java
[JAVA - OOP 심화3] 다형성
jungha_k
2022. 9. 8. 17:02
✨다형성 (polymorphism)
:하나의 객체가 여러가지 형태를 가질 수 있는 성질
= 상위 클래스 타입의 참조변수를 통해 하위 클래스의 객체를 참조할 수 있도록 허용
✨핵심 : 상위클래스 → 하위클래스 객체 참조 가능
반대는 불가능하다!
(상위 → 하위는 기능 보유..) (하위→ 상위는 하위의 추가된 기능들을 상위가 어떻게 가능해? 안되기 때문.. )
✨예시 : 오버라이딩, 오버로딩
✨참조변수 - 타입변환 가능
: 사용할 수 있는 멤버 갯수 조절
✨타입 변환 위한 조건
1. 서로 상속관계에 있는 상위 클래스 - 하위 클래스 사이에만 타입 변환이 가능합니다.
2. 하위 클래스 타입에서 상위 클래스 타입으로의 타입 변환(업캐스팅)은 형변환 연산자(괄호)를 생략할 수 있습니다.
3. 반대로 상위 클래스에서 하위 클래스 타입으로 변환(다운캐스팅)은 형변환 연산자(괄호)를 반드시 명시해야합니다.
-->
양방향으로 타입 변환 가능하다, but
자식은 부모집을 언제든지 방문가능(업캐스팅)
부모는 자식집을 함부로 다닐 수는 없음(다운캐스팅) - 괄호 필요하다
✨instance of (boolean 타입) : 캐스팅 가능여부 알아보는 문법
ex)
public class InstanceOfExample {
public static void main(String[] args) {
Animal animal = new Animal();
System.out.println(animal instanceof Object); //true
System.out.println(animal instanceof Animal); //true
System.out.println(animal instanceof Bat); //false
Animal cat = new Cat();
System.out.println(cat instanceof Object); //true
System.out.println(cat instanceof Animal); //true
System.out.println(cat instanceof Cat); //true
System.out.println(cat instanceof Bat); //false
}
}
class Animal {};
class Bat extends Animal{};
class Cat extends Animal{};