Thinking in Java第三版读书笔记-第七章:多态性

王朝java/jsp·作者佚名  2008-05-31
宽屏版  字体: |||超大  

第七章:多态性

1、“封装”通过将数据的特征与行为结合在一起,创建了一种新的数据类型。“隐藏实现”通过将细节设置成private,完成了接口与实现的分离。而多态性是站在“类”的角度来

处理这种逻辑上的分离的。

(chap7,P2)

2、“上传”使得类的动态性得以实现,但需要注重的是,只有基类是public的情况下,扩展类的复写才可以实现,比如下面的例子:

public class Test {

private void f() {

System.out.println("private f()");

}

public static void main(String[] args) {

Test po = new Derived();

po.f();

}

}

class Derived extends Test {

public void f() {

System.out.println("public f()");

}

}

例子中,Test.f是private的,所以Derived.f其实不是Test.f的复写,Derived.f是一个全新的方法,它连重载都算不上,因为Derived根本看不到基类的f()。

所以,输出的应该是private f(),而不是public f()。

(chap7,P12)

3、假如类包含一个或多个抽象方法,那么这个类必须定义为abstract,但假如类没有abstract方法,也可以将类定义为abstract。

(chap7,P13)

4、构造函数的调用顺序:

①调用基类的构造函数。这是一个递归过程,因此会先创建继续体系的根,然后是下一级派生类,依此类推,直到最后一个继续类的构造函数

②成员对象按照其声明的顺序进行初始化

③执行继续类的构造函数的正文。

其实,还不如这样表述表决方便:在一个类的初始化过程中,先按成员对象的声明顺序初始化这些成员变量,然后执行其构造函数;假如有基类,则先初始化基类。

(chap7,P17)

5、假如要内存清理,则可以从基类开始写一个函数,函数名可以自己定,但调用的时候,必须从顶层开始执行,这刚好与构造函数的调用顺序相反。

(chap7,P18)

6、开始做Java的时候,不要想着把整个程序做成一个类系,比较好的办法是合成。

(chap7,P23)

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有