多态(java)优点以及缺点


面向对象三大特点:分装性,继承性,多态性。extends继承或者implements接口的实现,是多态性的前提。
一个对象既是子类又是父类,拥有多种形态 对象的多态性

多态的定义格式

格式:(左侧父类的引用,指向了右侧子类的对象) 父类名称 对象名=new 子类名称();Fu 对象名称 =new Zi(); 接口名称 对象名称 =new 实现类名称();

多态中成员变量的使用特点

成员变量不能覆盖重写 访问成员变量的两种形式: 1.直接通过对象名称访问成员变量:看等号左边是谁,优先用谁,没有则向上找,反正不可能往下找,没有最高(extends Object)就是最高。 2.间接通过成员变量方法访问成员变量:通过方法。看该方法属于谁就优先用谁,没有则向上找。

成员方法的使用特点

看右边new的是谁,就优先用谁,没有则向上找。

Fu obj =new Zi();
obj.method();//父子都有,优先用子
obj.methodFu();//子类没有,父类有,向上找到父类

口诀:编译看左边,运行看右边。 例如错误写法obj.methodZi(); //左边是父,Fu当中没有methodZi方法,左移编译器报错。 对比一下 成员变量:编译看左边,运行看左边。 成员方法:编译看左边,运行看右边。

使用多态的缺点

一旦使用了多态,成员变量只能用父类的了,成员方法只能用父类里面有的,优先用子类里面重写父类的成员方法,如果子类没有重写父类的成员方法,就向上找父类的自己的成员方法。但是不能用子类里面特有的方法以及其它内容。

使用多态的好处

为什么要用父类。和接口? 如果不用多态,只用子类,那么写法是:

Teachar one=new Teacher();
one.work();
Assistant two=new Assistant();
two.work();

老板现在唯一要做的事情,就是调用work方法,其他的功能不关心。 如果使用多态的写法,对比一下:

Employee one=new Teacher();
one.work();
Employee two=new Assistant();
two.work();

好处:无论右边new的时候换成哪个子类对象,等号左边调用方法都不会变化。

经验分享 程序员 微信小程序 职场和发展