菜鸟学JAVA(六)—— 多态
我个人觉得面向对象的三特性中最难理解的就是多态,因为多态是继封装和继承之后的第三者基本特征。 下面先看一个多态的例子吧:
在这个程序中:这里可能会有点纳闷,这也行?当然,当然可以。这里的意思是:父类的引用可以指向子类对象,这是多态最表面的意思,也是比较好理解的意思。
下面来探讨一下多态的深沉含义。用父类引用指向子类对象,一般情况下只会调用父类的方法,如果子类方法重写了父类的方法呢?那么就会调用子类的方法,但是不会调用子类中新增的方法。
从以上就可以看出多态的三个特性:需要继承,要有重写,父类引用要指向子类。
多态的两种强制转换类型1、向上类型转换,既将子类类型向父类类型转换,不需要显示指定。例如:2、向下类型转换,既将父类类型向子类类型转换,需要显示指定例如:小技巧:成员函数在多态调用时,编译看左边,运行看右边
注:多态中成员变量的特点是无论编译和运行,都参考左边(引用型变量所属的类)
多态中静态成员函数的特点是无论编译和运行,都参考左边。静态绑定
通过上面的例子,多态的好处也显而易见吧,一个方法解决所以的不同。如果没有多态,想一想成千的动物都有不同的叫声,那我们都要写一遍方法。调用就更麻烦了,必须用本动物的引用才能调用此方法。所以,多态可以大大减少代码量。
好了,这篇写的好像有点乱,但整体上多态最基本的特性都体现出来了。总之记住一句话:父类引用指向子类对象
还是送上一句话吧,一起共勉 :
天行健,君子以自强不息。——《周易》