多態的前提
多態前提:
有繼承或實現關係
有方法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");
}
}