/*
定义父类Animal(抽象类,吃为抽象)
子类猫继承Animal,将吃具体实现。
主函数直接定义Animal a=new Cat();//向上转型成父类型实现多态。
优先是实现代码的简化,缺点是是只能实现父类的eat();
*/
package demo;
abstract class Animal {
abstract void eat();
}
package demo;
public class Cat extends Animal{
@Override
void eat() {
System.out.println("吃鱼");
}
void chang() {
System.out.println("唱");
}
}
package demo;
public class Dog extends Animal{
@Override
void eat() {
System.out.println("吃骨头");
}
void kanJia() {
System.out.println("看家");
}
}
package demo;
public class Test {
public static void main(String[] args) {
/*
* Cat c=new Cat(); c.eat(); c.chang(); Dog d=new Dog(); d.eat(); d.kanJia();
*/
Function(new Cat());
Function(new Dog());
}
public static void Function(Animal a) {
a.eat();
}
}