多态

多态


多态是同一个行为具有多个不同表现形式或形态的能力。多态就是同一个接口,使用不同的实例而执行不同操作。

如图:

多态的优点

  • 1. 消除类型之间的耦合关系
  • 2. 可替换性
  • 3. 可扩充性
  • 4. 接口性
  • 5. 灵活性
  • 6. 简化性

多态的前提:

  • 子父类继承关系;
  • 方法的重写;
  • 父类引用指向子类对象
public class PoymorphicDemo {
    public static void main(String[] args) {
        
        Animal a = new Cat();
        a.eat();
        
    }
}

class Animal {
    public void eat() {
        System.out.println("吃东西");
    }
}


class Cat extends Animal {
    public void eat() {
        System.out.println("猫吃鱼");
    }
}

输出结果: 猫吃鱼

多态的成员特点:

成员变量:没有重写的概念;

成员方法:根据子类方法输出结果;

静态方法:通过类名调用方法;

public class PoymorphicDemo2 {
    public static void main(String[] args) {
        Dad d = new Kid();
        d.function();
    }
}

class Dad {
    public static void function() {
        System.out.println("我是父类静态方法");
    }
}

class Kid extends Dad {
    public static void function() {
        System.out.println("我是子类静态方法");
    }
}

输出结果: 我是父类静态方法

总结:

1. 多态是方法的多态,不是属性的多态(多态与属性无关)。

2. 多态的存在要有3个必要条件:继承方法重写父类引用指向子类对象。

3. 父类引用指向子类对象后,用该父类引用调用子类重写的方法,此时多态就出现了。

好处:节省代码让代码更加灵活,不论增加多少子类,都没有问题,如果没有多态就会有大量的重载。

  多态的实现方式

  • 接口实现多态
  • 抽象类实现多态
  • 虚方法实现多态
参考https://zhuanlan.zhihu.com/p/111205248
原文地址:https://www.cnblogs.com/LiaoMengyu/p/12508046.html