개발일기/Java

메소드 오버라이딩 : 다른 예제 (동물)

민장미 2023. 4. 25. 00:46

 

동물 클래스(슈퍼 클래스)

새 클래스, 고양이 클래스, 개 클래스(서브 클래스)

 

 

 

출력해보면 서브클래스의 메소드만 계속 호출되는 것을 알 수 있다.

슈퍼클래스 타입으로 선언해도 오버라이딩이 되어 있다면, 서브클래스의 메소드가 호출된다.

 

package book;

class Animal{
	void cry() {}
}

class Bird extends Animal{
	@Override
	void cry() {
		System.out.println("짹쨱");
	}
}

class Cat extends Animal{
	@Override
	void cry() {
		System.out.println("냐옹");
	}
}

class Dog extends Animal{
	@Override
	void cry() {
		System.out.println("짹쨱");
	}
}


public class Page_335_Ani {
public static void main(String[] args) {
	//각각의 타입으로 선언 + 각각의 타입으로 생성
	Animal aa = new Animal();
	Bird bb = new Bird();
	Cat cc = new Cat();
	Dog dd = new Dog();
	
	aa.cry();
	bb.cry();
	cc.cry();
	dd.cry();
	System.out.println();
	
	// Animal 타입으로 선언 + 자식 클래스 타입으로 생성
	Animal ab = new Bird();
	Animal ac = new Cat();
	Animal ad = new Dog();
	
	ab.cry();
	ac.cry();
	ad.cry();
	System.out.println();
	
	//배열로 관리 
	Animal[] animals = {new Bird(), new Cat(), new Dog()};
	
	for(Animal e: animals) {
		e.cry();
	}
}	
}