读《java编程思想》7-复用类

时间:2019-09-03
本文章向大家介绍读《java编程思想》7-复用类,主要包括读《java编程思想》7-复用类使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
复用类并不是复制粘贴,修改一下代码就够了,
java提供两种方式复用类,1组合、2继承
1、组合,将已有对象置于新类中即可。
类中域为基本类型时能够自动初始化为0,对象引用则初始化为null。
对象引用初始化的位置:
(1)在定义对象的位置
(2)类的构造器中
(3)正要使用对象之前,称为惰性初始化
(4)实例初始化 (相对于静态初始化块的实例初始化快中)
2、继承
在基类名称后接关键字extends,便可自动得到基类中的所有域和方法。(private除外)
3、初始化基类
(1)当创建一个导出类的对象时,该对象包含一个基类的子对象。(内部)
为了保证基类子对象正确初始化,则需要在导出类构造器中调用基类构造器执行初始化。
(2)构建的过程是从“基类”扩散的,所以基类在导出类构造器可以访问它之前,就已经完成了初始化。
(3)导出类默认构造器会自动调用基类默认构造器。如果基类没有默认构造器或者想要调用带参数的基类构造器,则必须使用super显示调用,并且需要放在构造器的第一行。
4、代理
将一个成员对象置于所要构造的类中(类似组合),并在新的类中暴露改成员对象的所有方法(类似继承)
5、重载&覆写
重载 方法名相同,参数列表不同。
覆写 方法名相同,参数列表相同,使用@Override注解。
(都不能用返回值作为判断)
6、继承还是组合
(1)is-a 关系用继承 has-a 关系用组合
(2)是否需要向上转型?是则继承,不是则组合
7、final关键字
即:”这是不可改变的“
(1)final数据
a. 常量:程序的整个运行过程中值保持不变的量。
常量值:常量值又称为字面常量,它是通过数据直接表示的。如 整型常量 值、实型常量值(浮点等)、布尔型常量值、字符型和字符串常量值。
定义常量:常量不同于常量值,它可以在程序中用符号来代替常量值使用,因此在使用前必须先定义。java中使用final 关键字来定义一个常量。
b. final + 基本数据类型,定义时赋值则为编译时常量。
c. final + 引用类型,则引用恒定不变。(指向的对象可以被修改)
d. final常量初始化,要么在定义时,要么在构造器中。(空白final)
e. static final 常量名需要大写。
f. final参数,表示方法执行中不能改变。
(2)final方法
该方法在继承中禁止覆盖。private方法隐式指定为final。
(3)final类
该类禁止继承。
8、理解继承中的初始化顺序,则从类加载和对象初始化开始。
(1)类初次使用时加载,当发现有基类时,则先加载基类。
加载类同时,static对象和static代码块 按照顺序初始化。
(2)类加载完后,对象初始化。为了保证对象的实例变量(成员变量)和实例代码块,在使用前初始化。
则对象初始化顺序如下:
a. 实例对象和实例代码块 定义时按照顺序初始化
b. 构造器中初始化
c. 方法内初始化
(3)当初始化对象时,当发现有基类,则会先初始化基类。顺序参考第二步。
由上面三个原因,才会得出 读《java编程思想》5-初始化与清理 中的结论:
父静态成员变量->父静态代码快 -> 子静态成员变量-> 子静态代码快 -> 父成员变量 -> 父代码块-> 父构造器 -> 子成员变量 -> 子代码块-> 子构造器
简单说
先静态 后非静态
先成员 后构造器
先父后子
参考
[http://c.biancheng.net/view/763.html](http://c.biancheng.net/view/763.html)

原文地址:https://www.cnblogs.com/shineup/p/11453140.html