专业的JAVA编程教程与资源

网站首页 > java教程 正文

java基础之多态与向上转型,很用心的一篇笔记

temp10 2024-09-27 22:55:45 java教程 10 ℃ 0 评论

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

多态与向上转型

方法的多态性

记住这几句话即可。

java基础之多态与向上转型,很用心的一篇笔记

(1)只有普通的方法调用才可以是多态的。即域不具有多态性。

(2)也就是说只有非private方法才有多态性,即private,final,static方法都不具有多态性。

多态是和继承联系在一起的。我们在设计程序时,往往父类只提供一个接口方法,我们只与这个接口进行通信。而子类则可以重写这个这个方法,以便具有自己的行为方式。然后我们将子类向上转型为父类,再来调用这个方法,就可以实现子类的特定行为了。这样子,如果子类特别多,当任何一个子类要有修改该方法时,就不会影响到其他子类。大大提高了程序的可扩展性和可维护性。

=================================================

具体例子如下:

=================================================

前面说过,只有非private方法才有多态性。我们看一个例子来验证,如下:

我们看,此时运行结果显示调用的是父类的f()方法。其实此时,子类的f()就相当于一个新的方法,跟父类的那个f()方法没什么关联。类似的static也是一样的道理。

其实多态就是在继承关系里,子类重写父类的接口方法使自身具有特定的行为而已。我们验证了pivate方法不能被重写,因为本质上private是属于final类型的。

=================================================

再来看一个例子,主要是为了说明,多态是无法向下转型的,也就是父类不能调用子类中独立的方法(即父类中没有该方法),如下:

=================================================

总结:多态的存在要有三个必要条件

(1)要有继承

(2)要有重写

(3)父类引用指向子类对象

另外必须记住的规则:

(1)编译器是根据引用类型来判断哪些方法可以调用,而不是根据对象的确实的类型。

(2)在调用方法时,遵循最低阶原则。即在继承树中,java虚拟机会从最底层开始寻找调用的方法,

直到找到为止。

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表