多态,最常用的场合就是当做参数进行传递,可以提高代码的扩展性,给你举个例子
假设,有一个方法的形参是一个类类型变量,在方法体中,使用这个传入的对象引用调用方法eat()- class DemoMul {
- public static void main(String[] args) {
- //如果不使用多态,调用Dog和Cat类的方法就必须写如下好多eatMathod(),重载
- eatMethod(new Dog());
- eatMethod(new Cat());
- //...
- //如果有n个,不是要写n个eatMathod()
- /*使用多态,则只有写一个eatMathod()即可*/
- eatMethod(new Dog());
- eatMethod(new Cat());
- }
- public static void eatMethod(Dog d){
- d.eat();
- }
- public static void eatMethod(Cat c){
- c.eat();
- }
- //...
- /*使用多态,则只有写一个eatMathod()即可*/
- public static void eatMethod(Animal a){
- a.eat();
- }
- }
- abstract class Animal {
- public abstract void eat();
- }
- class Cat extends Animal {
- //重写父类抽象方法
- public void eat(){
- System.out.println("猫吃鱼");
- }
- }
- class Dog extends Animal {
- public void eat(){
- System.out.println("狗吃骨头");
- }
- }
复制代码 |