1. 다형성 조건
- 1. 상속(extends) 또는 구현(implements)
- 2. 오버라이딩(Overring)
- 3. 부모타입 r = new 자식객체 (upcasting) 또는 인터페이스 r = new 구현클래스
2. 다형성 인수
public static void display (Animal r) {
r.eat();
}
Arnimal r의 매개변수로 new Dog(); new Cat(); new Horse(); new Cow(); 등 Animal의 모든 자식객체(하위클래스)를 받을 수 있다.
3. 다형성 배열 (서로 다른 자식객체를 담을 수 있다.)
public class TPC24 {
public static void main(String[] args) {
Animal[] ani=new Animal[2];
ani[0]=new Dog();
ani[1]=new Cat();
for(int i=0;i<ani.length;i++) {
ani[i].eat();
if (ani[i] instanceof Cat) {
//부모타입(Animal)의 객체변수r이 자식객체(Cat)를 가리킨다면
((Cat)ani[i]).night();
//부모타입(Animal)의 객체변수r을자식타입(Cat)의 객체변수로 바꾼다.
}
}// for
display(ani);
}
}
- r[0].eat(); //개처럼 먹다.
- r[1].eat(); // 고양이처럼 먹다.
- ((Cat)r[1]).night(); // 밤에 눈이 빛난다.
'자바 > Java TPC(생각하고, 표현하고, 코딩하고)' 카테고리의 다른 글
인터페이스(100% 다형성 보장) & final, static (0) | 2022.10.27 |
---|---|
추상클래스(일부 다형성 보장) (0) | 2022.10.27 |
부모와 자식간에는 형변환이 된다. & 나보다 부모가 먼저야 (0) | 2022.10.26 |
오버라이딩(Overrring) (0) | 2022.10.26 |
클래스의 정의 (0) | 2022.10.26 |