读《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
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- iOS 图像处理技术追踪-Core Image
- Android BottomSheetDialog使用实现底部拖动弹窗
- Android 滑动渐变背景Toolbar、点击置顶ScrollView
- Android 自定义View 画圆(奥运五环)
- Android 触摸屏交互之手势监听
- Android Glide加载网络图片不显示,但用网页打开又正常显示
- Android获取APP的版本号和版本名
- Android 在一个APP里打开另一个APP
- Android 自定义加载动画Dialog弹窗
- Android 天气APP(十一)未来七天的天气预报、逐小时预报、UI优化
- Android 天气APP(十)继续优化、下拉刷新页面天气数据
- Activity 活动跳转(Java&Kotlin)
- Android 天气APP(九)细节优化、必应每日一图
- Android CheckBox修改选中颜色并去除选中时的水波纹效果
- 绘制带回归线的散点图