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