package ch07.ex09;

public abstract class Animal {
	protected String kind;
	
	public void breathe() {
		System.out.println("숨을 쉽니다.");
	}
	
	public void run() {
		System.out.println("네발로 뜁니다.");
	}
	
	public abstract void sound();
}
package ch07.ex09;

public class Dog extends Animal{

	public Dog() {
		super.kind="포유류";
	}
	
	@Override
	public void sound() {
		System.out.println("머엉머엉~~");
	}

}
package ch07.ex09;

public class Cat extends Animal{

	public Cat() {
		super.kind="포유류";
	}
	
	@Override
	public void sound() {
		System.out.println("야옹~~!");
	}
	
	@Override
	public void run() {
		System.out.println("네발로 빠르게 뜁니다.");
	}

}
package ch07.ex09;

public class Ex {

	public static void sub(Animal animal) {
		animal.sound();
	}
	
	public static void main(String[] args) {
		Animal dog=new Dog();
		dog.breathe();
		dog.sound();
		dog.run();
		
		System.out.println();
		
		Animal cat=new Cat();
		cat.breathe();
		cat.sound();
		cat.run();
		
		System.out.println();
		
		Dog dog2=new Dog();
		dog2.breathe();
		dog2.sound();
		dog2.run();
		
		System.out.println();
		
		Cat cat2=new Cat();
		cat2.breathe();
		cat2.sound();
		cat2.run();
		
		System.out.println("-----UpCasting-----");
		
		sub(cat);
		sub(dog);
	}

}
숨을 쉽니다.
머엉머엉~~
네발로 뜁니다.

숨을 쉽니다.
야옹~~!
네발로 빠르게 뜁니다.

숨을 쉽니다.
머엉머엉~~
네발로 뜁니다.

숨을 쉽니다.
야옹~~!
네발로 빠르게 뜁니다.
-----UpCasting-----
야옹~~!
머엉머엉~~