作为Java的第三大特性--多态,大家肯定很熟悉了,但是对于这个抽象的概念相信总有一些模糊,think in Java 在本章做了很多的解释,具体讲解了一下三个问题。
1.多态解决了什么问题? 2.什么是多态? 3.多态的扩展
多态解决了type的解耦问题。多态使我们不用去关注具体的类型是什么,多态的设计就是为了让我们忘记类型这一回事。因为我们不用关注具体的类型,所以很多代码我们都可以复用,我们可以使用一段代码解决类似的问题。这在我们开发过程中有很大的作用,这个解耦使我们每一层的使用牵连减小。总的来说多态解决的问题就是type的解耦问题。在思想上来说,就是让我们忘记类型。
当我说出这个问题的时候大家可能会下意识的以为我要进行一些很抽象性、很概念性的讲解,实际我想说明的并不是这些概念性的东西,这些直接百度即可。那么回到正题,什么是多态?多态其实也有一些其他的叫法,我更喜欢其中一种,运行时绑定。
在讲解这个词的时候,首先我们来了解一下绑定。绑定分为运行前绑定和运行时绑定。运行前绑定就是在程序没有绑定的时候程序就已经知道要使用的这个方法的具体类型是哪一个了。相反,运行时绑定就是程序在运行前不知道具体使用的方法的类型,只有运行时知道具体使用的方法类型。这样也就实现了不用知道具体的Type的效果。
Java的整体机制就是使用运行时绑定的。除了属性和私有和静态方法。
我们知道多态只能控制父类的方法,对于子类扩展开来的方法是不能进行操作的,但是我们肯定会遇到这种情况。那么在这个时候我们就不能再使用向上转换了,使用向下转换。但是这里面有一个问题,就是我们不知道这个类型是不是这样你转化的类型,会出现转换出错的问题,这个在c++里面是不安全的,但是Java里面有一个机制,就是在向下转换的时候一定要强制转换进行检查,这样就可以达到安全控制,如果不是会报一个ClassCastException的错误。
相关推荐:
以上是Java的第三大特性--多态的理解的详细内容。更多信息请关注PHP中文网其他相关文章!