package test05;import test06.Car1;public class DuoTai_Test02 { /**多個對象,一個形態 * Tiger、Lion、Snake → Animal *、多個對象,一種形態(類型)。 * 不同對象,表現出同一種形態之後。 * 可以實現同樣的功 ...
package test05;
import test06.Car1;
public class DuoTai_Test02 {
/**多個對象,一個形態
* Tiger、Lion、Snake → Animal
*、多個對象,一種形態(類型)。
* 不同對象,表現出同一種形態之後。
* 可以實現同樣的功能。
*
* 此方式,需要多個子類對應一個父類。
* 往往是採用(多個)子類繼承父類來實現。
*
* @param args
*/
public static void main(String[] args) {
Animal animal=new Cat(); ///抽象引用指向子類對象
animal.eat();
animal.sheep();
Animal animal2=new Dog();
animal2.eat();
animal2.sheep();
Animal animal3=new Snack();
animal3.eat();
animal3.sheep();
DuoTai_Test02 dt=new DuoTai_Test02();
dt.test(new Cat());
dt.test(new Dog());
dt.test(new Snack());
}
public void test(Animal animals){
animals.eat();
animals.sheep();
}
}
abstract class Animal{/////抽象類
String name;
int age;
public abstract void eat();///抽象方法
public abstract void sheep();////抽象方法
}
class Cat extends Animal {
public void eat(){ ////重寫
System.out.println("貓吃");
}
public void sheep(){ ////重寫
System.out.println("貓睡覺");
}
}
class Dog extends Animal{
public void eat(){ ////重寫
System.out.println("狗吃");
}
public void sheep(){ ////重寫
System.out.println("狗睡覺");
}
}
class Snack extends Animal{
public void eat(){ ////重寫
System.out.println("蛇吃");
}
public void sheep(){ ////重寫
System.out.println("蛇睡覺");
}
}