多態的前提

image.png

多態前提:
有繼承或實現關係
有方法Override
有父類引用指向子類對象

範例:



public static void main(String[] args){
	//子類實例引用父類型別 是對象多態的呈現
	Animal a1 = new Dog();
	Animal a2 = new Cat();

	//使用父類來接收子類形別 是對象多態呈現的一種,父類可以接收任意的子類對象
	useAnimal(a1); //	"Dog eat meat"
	useAnimal(a2); //   "Cat eat fish"
}


//使用父類型別來接收
//若傳入為Dog形別 會等同於
// Animal a = new Dog();
public static void useAnimal(Animal a){
	 a.eat()
	 //這邊是行為多態的表現
	 //若傳入為Dog 則打印"Dog eat meat"
	 //若傳入為Cat 打印"Cat eat fish"
	 //根據傳入的對象不同,相同的方法卻有不同的表現形式
}


abstract class Animal{
	public abstract void eat();
}

class Dog extends Animal{
	@Override
	public void eat(){
		system.out.println("Dog eat meat");
	}
}

class Cat extends Animal{
	@Override
	public void eat(){
		system.out.println("Cat eat fish");
	}
}