测试代码:
1.创建Animal.java类作为父类
2.创建Cat.java类作为Animal的子类
3.创建一个Dog.java类作为Animal的子类
4.创建Test.java测试类
代码说明:多态的好处并不仅仅是 父类引用指向子类对象(Animal animal = new Dog()),这样的话我们不能调用Dog子类中特用的方法和属性,我们在创建对象的时候直接创建子类对象更方便(Dog g = new Dog()),多态真正的好处其实是将父类作为参数在公共的方法中传递,这样只要继承了该父类,所有的子类就可以通过参数的形式将创建的对象传递到方法中。提高了代码的扩展性和维护性。但是这样做,会产生一个弊端,我们无法调用具体子类对象中的方法和属性,所以我们需要对传入的参数进行实例判断(instanceof),并进行向下强转(Dog g =(Dog)animal )。
总结多态的好处和弊端:
多态的好处
- 提高代码的维护性(继承保证)
- 提高了代码的扩展性(由多态保证)
- 可以当做形式参数,可以接收任意子类对象
多态的弊端:
- 也就是不能使用子类的特有属性和方法(行为)