面试小问题——什么是多态?

  在Java面试中,多态是一个被问到的频率很高的一个概念。多态整理如下:

  一、什么是多态?

  概念:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性。简单的说:就是用基类的引用指向子类的对象。

  比如有一个父类superClass,它有2个子类subClass1subClass2superClass有一个方法 func(),两个子类都重写了这个方法。那么我们可以定义一个superClass的引用obj,让它指向一个子类的对象,比如superClass obj = new subClass1();那么我们调用obj.func()方法时候,会进行动态绑定,也就是obj它的实际类型的func()方法,即subClass1func()方法。同样你写superClass obj = new subClass2()obj.func()其实调用的是subClass2func()方法。这种由于子类重写父类方法,然后用父类引用指向子类对象,调用方法时候会进行动态绑定,这就是多态。多态对程序的扩展具有非常大的作用,比如你要再有一个subClass3,你需要改动的东西会少很多。

  二、多态有什么好处?

  1. 应用程序不必为每一个派生类编写功能调用,只需要对抽象基类进行处理即可。大大提高程序的可复用性//继承 
  2. 派生类的功能可以被基类的方法或引用变量所调用,这叫向后兼容,可以提高可扩充性可维护性 //多态的真正作用
原文地址:https://www.cnblogs.com/baichunyu/p/11006229.html