Class - 다형성 (2)
package Class_Casting;
class Animal{
void breath() {
System.out.println("숨쉬기");
}
}
class Lion extends Animal{
public String toString() {
return "사자";
}
}
class Rabit extends Animal{
public String toString() {
return "토끼";
}
}
class Monkey extends Animal{
public String toString() {
return "원숭이";
}
}
class Zookeeper{
void feed(Animal animal) {
System.out.println(animal+"에게 먹이주기");
}
}
public class Class_Casting2 {
public static void main(String[] args) {
Animal lion1 = new Lion();
Zookeeper james = new Zookeeper();
james.feed(lion1);
}
}
어려운 파트라 더 쉽게 이해하기 위해 한문제 더 가져왔다.
main함수 먼저 보면 Lion클래스의 객체를 Animal타입으로 변수 lion1에 저장했다. 그 다음
Zookeeper 클래스 객체를 Zookeeper타입으로 변수 jamse에 넣어주었다. 그 다음
jamse클래스 안에있는 메소드 feed(liin1)를 불렀는데 이것은 같은 객체타입이라서 가능하다.
Animal lion1 = new Lion();
lion1을 Zookeeper의 타입으로 바꿔주었기에 Zookeeper타입의 객체인 james와 사용이 가능한것이다.