多态的好处:
* 1)提高了代码的复用性(由继承保证)
* 2)提高了代码的扩展性(由多态来保证)
//动物类
class Animal{
public void eat() {
System.out.println("动物需要吃饭");
}
public void sleep() {
System.out.println("动物都需要休息");
}
}
//定义一个猫类
class Cat extends Animal{
@Override
public void eat() {
System.out.println("猫吃");
}
@Override
public void sleep() {
System.out.println("猫趴着睡");
}
}
//定义一个狗类
class Dog extends Animal{
@Override
public void eat() {
System.out.println("狗吃骨头");
}
@Override
public void sleep() {
System.out.println("狗躺着睡");
}
}
//动物类工具
class AnimalTool{
private AnimalTool() {}//构造私有化,外界不能创建该类对象
//父类引用指向子类对象
public static void useAnimal(Animal a) {//a为形式参数
a.eat();
a.sleep();
}
}
//测试类
public class DouTaiDemo2 {
public static void main(String[] args) {
Dog d=new Dog();
d.eat();
d.sleep();
System.out.println("---------");
Dog d2=new Dog();
d2.eat();
d2.sleep();
System.out.println("---------");
//改造---->定义两个静态方法,形参都是对应具体动物,进行测试
/*useDog(d);
useDog(d2);
System.out.println("---------");
useCat(new Cat());
useCat(new Cat());
System.out.println("---------");*/
//提供一个动物类:分别产生具体动物对象调用对应的eat()/sleep()
AnimalTool.useAnimal(d);//Animal a=new Dog()
AnimalTool.useAnimal(new Cat());//Animal a=new Cat()
}
//定义一些功能
/*public static void useDog(Dog d) {
d.eat();
d.sleep();
}
public static void useCat(Cat c) {
c.eat();
c.sleep();
}*/
}