(혼) (공) (자)

Class - 다형성 (2)

만석이 2024. 1. 16. 01:44

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와 사용이 가능한것이다.