《Java 编程思想》--第七章:复用类
2013-04-25 16:02
411 查看
如果想初始化引用,可以在代码中的下列位置进行:
在定义对象的地方。这意味着他们总是能够在构造器被调用之前被初始化
在类的构造器中
就在正要使用这些对象之前,这种方式称为惰性初始化,可以减少额外的负担
使用实例初始化
为了继承,一般的规则是将所有的数据成员都指定为private,将所有的方法指定为public
当创建了一个到处类的对象时,该对象包含了一个基类的子对象。这个子对象与你用基类直接创建的对象时一样的
构造过程是从基类“向外”扩散的,所以基类在导出类构造器可以访问它之前,就已经完成初始化
使用super调用基类构造器
类初始化的调用顺序:
父类静态成员和静态初始化块
子类静态成员和静态初始化块
父类实例成员和实例初始化块
父类构造方法
子类实例成员和实例初始化块
子类构造方法
java中没有析构函数的概念,如果想要某个类清理一些东西,就必须显式地编写一个特殊方法来做这件事
使用与积累完全相同的特征签名及返回类型来覆盖具有相同名称的方法,需要覆盖时可以用@Override,可以防止在不想重载的时候重载
组合和继承都允许在新的类中放置对象,组合是显式地这样做,而继承则是隐式地做
组合技术通常用于想在新类中使用现有类的功能而非它的接口
protected域,对外无法访问,对包内的类和其继承类可以访问
向上转型:由导出类的引用转换成基类的动作。向上转型的过程中,类接口中唯一可能发生的事情是丢失方法,而不是获取他们。
final有三种情况:数据、方法、类
final数据:
一个永不改变的编译时常量
一个在运行时被初始化的值,而你不希望它改变
这类常量必须是基本类型,在对这个常量进行定义的时候,必须对其进行赋值
一个即是static又是final的域只占据一段不能改变的存储空间
对于基本类型,final使数值恒定不变;而用于对象引用,final使引用恒定不变
空白final:指被声明为final但由未给定初始值的域
final参数,java允许在参数列表中以声明的方式将参数指明为final,这意味着你无法在方法中更改参数所引用的对象
final方法:
把方法锁定,以防任何继承类修改它的含义,不会被覆盖
效率较高
只有在想要明确禁止覆盖式,才将方法设置为final
类中的所有private方法都隐式地指定为final,由于无法取用private方法,所以也就无法覆盖
final类:
表明了你不打算继承该类,也不允许别人继承该类
类的代码在初次使用时才会被加载,这通常是指加载发生于创建类的第一个对象时,但是当访问static域或static方法时,也会发生加载
组合一般是将现有类型作为新类型底层实现的一部分加以复用,而继承复用的是接口,在开始一个设计师,优先选择使用组合
在定义对象的地方。这意味着他们总是能够在构造器被调用之前被初始化
在类的构造器中
就在正要使用这些对象之前,这种方式称为惰性初始化,可以减少额外的负担
使用实例初始化
为了继承,一般的规则是将所有的数据成员都指定为private,将所有的方法指定为public
当创建了一个到处类的对象时,该对象包含了一个基类的子对象。这个子对象与你用基类直接创建的对象时一样的
构造过程是从基类“向外”扩散的,所以基类在导出类构造器可以访问它之前,就已经完成初始化
使用super调用基类构造器
类初始化的调用顺序:
父类静态成员和静态初始化块
子类静态成员和静态初始化块
父类实例成员和实例初始化块
父类构造方法
子类实例成员和实例初始化块
子类构造方法
java中没有析构函数的概念,如果想要某个类清理一些东西,就必须显式地编写一个特殊方法来做这件事
使用与积累完全相同的特征签名及返回类型来覆盖具有相同名称的方法,需要覆盖时可以用@Override,可以防止在不想重载的时候重载
组合和继承都允许在新的类中放置对象,组合是显式地这样做,而继承则是隐式地做
组合技术通常用于想在新类中使用现有类的功能而非它的接口
protected域,对外无法访问,对包内的类和其继承类可以访问
向上转型:由导出类的引用转换成基类的动作。向上转型的过程中,类接口中唯一可能发生的事情是丢失方法,而不是获取他们。
final有三种情况:数据、方法、类
final数据:
一个永不改变的编译时常量
一个在运行时被初始化的值,而你不希望它改变
这类常量必须是基本类型,在对这个常量进行定义的时候,必须对其进行赋值
一个即是static又是final的域只占据一段不能改变的存储空间
对于基本类型,final使数值恒定不变;而用于对象引用,final使引用恒定不变
空白final:指被声明为final但由未给定初始值的域
final参数,java允许在参数列表中以声明的方式将参数指明为final,这意味着你无法在方法中更改参数所引用的对象
final方法:
把方法锁定,以防任何继承类修改它的含义,不会被覆盖
效率较高
只有在想要明确禁止覆盖式,才将方法设置为final
类中的所有private方法都隐式地指定为final,由于无法取用private方法,所以也就无法覆盖
final类:
表明了你不打算继承该类,也不允许别人继承该类
类的代码在初次使用时才会被加载,这通常是指加载发生于创建类的第一个对象时,但是当访问static域或static方法时,也会发生加载
组合一般是将现有类型作为新类型底层实现的一部分加以复用,而继承复用的是接口,在开始一个设计师,优先选择使用组合
相关文章推荐
- java编程思想---第七章(复用类)
- JAVA编程思想学习总结:第七章——复用类
- java编程思想学习笔记 第七章 复用类
- 【Java编程思想笔记】第七章-复用
- Java编程思想之复用类
- Java编程思想:第7章 复用类
- java编程思想-复用类
- java编程思想3感悟(5)---复用具体实现和复用接口
- java编程思想 复用类总结摘录
- [Java编程思想]第7章 复用类
- java编程思想笔记07-复用类
- java编程思想复用,多态,以及设计模式-多态
- Java编程思想之7复用类
- Java编程思想学习(五) 复用类
- Java编程思想学习笔记(7)--复用类
- java编程思想阅读笔记(二)访问权限控制和复用类
- Java编程思想 第七章读书笔记
- Java编程思想——第七章
- Java编程思想-复用类总结
- Java 编程思想(第四版)学习笔记(7)复用类