Java编程思想笔记第八章(多态)

在面向对象的程序设计语言中,多态是继数据抽象和继承之后的第三种基本特征。

多态方法调用允许一种类型表现出与其他相似类型之间的区别,只要它们都是从同一基类导出而来的。这种区别是根据方法行为的不同而表现出来的,虽然这些方法都可以通过同一个基类来调用。

多态也称作动态绑定、后期绑定或运行时绑定。

对象即可以作为它自己本身的类型使用,也可以作为它的基类型使用。而这种把对某个对象的引用视为对其基类型的引用的做法称为向上转型-因为在继承树的画法中,基类是放置在上方的。

将一个方法调用同一个方法主体关联起来被称作绑定。若在程序执行前进行绑定(如果有的话,由编译器和连接程序实现),叫作前期绑定。C语言

后期绑定,就是在运行时根据对象的类型进行绑定。也叫动态绑定或运行时绑定。要实现动态绑定,就必须有某种机制,以便在运行时蹦判断对象的类型。Java中除了static方法和final方法(private方法属于final方法)之外,其他所有的方法都是后期绑定。

多态,将改变的事物与未变的事物分离开来。

只有非private方法才可以被覆盖;

只有普通的方法调用是多态的,如果直接访问某个域,这个访问将在编译期间进行解析。不会发生多态。

如果某个方法是静态的,它的行为就不具有多态性。静态方法是与类,而并非与单个的对象相关联的。

基类的构造器总是在继承类的构造过程中被调用,作用:继承类只能访问它自己的成员, 不能访问基类中的成员(基类成员通常是private类型)。只有基类的构造器才能具有恰当的知识和权限来对自己的元素进行初始化。因此,必须令所有的构造器都得到调用,否则就不能正确构造完整对象。

对象调用构造器顺序:

(1)调用基类构造器。这个步骤会不断地反复递归下去,首先是构造这种层次结构的根,然后是下一层导出类,直到最底层的导出类。如果基类的成员有初始化方法,会在构造器前按顺序调用基类成员的初始化方法。

(2)按申明顺序调用成员的初始化方法。

(3)调用导出类构造器的主体。

执行清理时,对于成员对象,销毁的顺序和初始化顺序相反,对于字段,与声明的顺序相反。

初始化的实际过程:

(1)在任何其他事物发生之前,将分配给对象的存储空间初始化成二进制的零。

(2)如前所述那样调用构造器。此时,调用被覆盖后的方法,由于步骤1的缘故,被覆盖后的方法中成员变量为0。

(3)按照声明的顺序调用成员的初始化方法。

(4)调用导出类构造器的主体。

用继承表达行为间的差异,并用字段表达状态上的变化。

你可能感兴趣的:(Java编程思想)