多态

绑定就是将一个方法调用同一个方法主体关联起来。如果在执行前绑定就是前期绑定,在运行时根据对象的类型进行绑定;

在Java中除了static和final方法之外,其他方法都是后期绑定,private也属于final方法,所以在通常情况下,我们不必要考虑是否应该进行后期绑定,因为它会自动发生

不要试图使用final来提高性能

Java的多态是通过动态绑定也就是后期绑定来实现的,那么我们就能编写只与基类打交道的代码了。在编译时,编译器不需要知道任何特殊的信息就能进行正确的调用

多态是一个让程序员{将改变的事务与未改变的事务分离开来}的重要技术

静态方法是与整个类相关联的,而不是与单个对象相关联的

构造器实际上是static,只不过没用显示声明

实际初始化顺序是:在其他任何事务发生之前,将分配给对象的存储空间初始化为二进制的0;然后像前面所说调用基类构造器;按照声明的顺序调用成员的初始化方法;调用导出类的构造器主体

编写构造器一条有用的准则是:用尽可能简单的方法使对象进入正常状态,如果可以的话避免调用其他方法。在构造器中,唯一能安全调用的那些方法是基类中的final和private方法

协变返回类型:表示在导出类的被覆盖方法可以返回基类方法的返回类型的某种导出类型

引用在运行时可以与另一个不同的对象连接起来,那么在运行期间就获得动态灵活性,也称为状态模式;相反,我们不能再运行时决定继承不同的对象,因为它要求在编译期完全确定下来;一条通用的准则是:用继承表达行为间的差异,并用字段表达状态间上的变化。状态的改变可以引起行为的变化。

向下转型会在运行时发生运行时类型识别,如果不是我们希望的那种类型就会产生类型转换异常


      多态意味着“不同的形式”。在面向对象的程序设计中,我们持有从基类继承而来的相同接口,以及使用该接口的不同形式:不同版本的动态绑定方法。

      我们已经知道,如果不运用数据抽象和继承,就不可能理解或者甚至不可能创建多态的例子。多态是一种不能单独来看待的特性(例如,像switch语句是可以的),相反它只能作为类关系“全景”中的部分,与其他特性协同工作。

      为了在自己的程序中有效地运用多态乃至面向对象的技术,必须扩展自己的编程视野,使其不仅包括个别类的成员和消息,而且还要包括类与类之间的共同特性以及它们之间的关系。尽管这需要极大的努力,但是这样做是非常值得的,因为它可以带来很多成效:更快的程序开发过程、更好的代码组织、更好扩展的程序以及更容易的代码维护等。


posted @ 2018-12-28 21:02  墨冰心  阅读(166)  评论(0编辑  收藏  举报