封装性: 安全性和重用性。
继承性: 高效性和重用性。
多态性: 统一性(有机性)和高效性。
面向对象的三大特性里面试官大佬问了多态的概念,在此总结一下。
1.多态是什么概念??
多态的前提是一个父类和多个子类,即父类引用指向子类对象。在调用一个方法时,从源代码上看,无法确定调用了哪个对象的方法(因为父子类有相同的方法),只有在程序运行期间根据//对象变量引用的实际对象才能确定此方法是哪个对象的,这种现象称之为动态绑定。
2.多态内部怎么实现的?
继承:多个子类对同一方法的重写
接口:实现接口并覆盖接口中的同一方法
3.扩展了解
//项目里面哪个地方用到和具体实现:
1.多态有编译时多态和运行时多态。
第一个是通过方法重载实现;
第二个是通过方法覆盖实现(子类覆盖父类方法)。
第一种就是我们调用方法是不用区分参数类型,程序会自动执行相应方法,如: 加法运算,可以使int相加,可以是double相加,都是同一个方法名。
第二种就是动态绑定,使用父类引用指向子类对象,再调用某一父类中的方法时,不同子类会表现出不同结果。 这样的作用就是扩展性极好,玩过网游的话应该知道 游戏中有不同的角色,它们都有一个父类,它们做相同动作时表现出来的效果就会不一样,比如跑,魔法师的跑跟战士的跑就不会一样,这就是俩者都覆盖了父类中的跑方法,各自有自己的现实,表现出来多态。 如果有一天你想再加个角色,只用再写一个类继承该父类,覆盖其中的跑方法就行了,其他代码不用怎么改,所以可维护性也很好。
2.其实说到多态就是 面向接口编程,它不和具体类尽心挂钩了。
比如 你没用多态的话,你每实例化一个对象 就要new一下,那假如你那天改变了需求了呢?那是不是又要改里面的?这样不好,所以 你可以通过多态,把需要相似的给提出来,然后继承它 这样以后需要扩展你仅仅只是继承而已,这样就很简单。
深入理解多态
最新推荐文章于 2021-10-16 21:03:48 发布