第十一天课堂笔记
构造代码块
-
{ }
-
给 所有对象 共性特点 进行初始化操作
-
创建对象时在堆区对象中存放实例变量,同时执行构造代码块
-
执行顺序:静态代码块—>非静态代码块—>构造方法
继承★★★
-
将多个类中相同的实例变量和实例方法 , 单独存放到一个类中,成为父类 , 系统默认继承Object类
-
子类通过extends 父类类名 继承父类
-
子类中编写除父类外 独有的 实例变量和实例方法
-
好处: 减少代码冗余
-
@override : 判断是否重写
-
方法的重写: CTRL + o 重写父类的方法
-
重写和重载的区别
- 重写
- 重写 override :=> 方法的覆盖
- 在子类中重写父类的方法
- 子类的方法与父类的方法名称必须一致、参数列表必须一致、返回值类型一致
- 重载
- overload
- 在同一个类中
- 方法名称一致、参数列表必须不一致(类型不同、个数不同、顺序不同)
- 重写
-
注意事项
- 父类 => 超类 : superclass
- 子类不能继承父类的构造方法
- 继承的特点:
- 单根性: 一个子类只能继承一个直接的父类
- 传递性: a extend b , b extend c …
-
this关键字
- 代表 当前这个对象
- 在当前这个类中使用
- 可以访问 本类当前对象 的实例变量,实例方法,其他构造方法,还可以访问父类对象中的实例变量,实例方法
- 查找方法 -> 当前对象中 -> 父类对象中
-
super关键字
- 代表 父类对象
- 只能在 子类中使用
- 只能访问父类对象中的实例变量,实例方法,构造方法
this | super | |
---|---|---|
代表 | 代表当前这个对象 | 代表父类对象 |
在哪里用 | 在当前类中使用 | 中能在子类中使用,调用父类 |
可以访问 | 访问当前对象的实例变量\方法\构造方法 访问父类对象的实例变量\方法 | 访问父类对象的实例变量\实例方法\构造方法 |
查询顺序 | 当前对象的实例对象\方法 -> 父类的实例对象\方法 | 父类中找实例变量\方法 |
-
注: 当子类重写父类的方法后,如果再在子类的方法体中调用父类的方法,则只能编写super,否则死循环
-
创建子类对象执行过程
/* 第一步 : 加载类 加载父类 : 执行父类的静态代码块 - > 加载子类 : 再行子类的静态代码块 第二步 : 创建对象 先创建父类对象: 创建父类对象 -> 执行父类的构造代码块 -> 执行父类相匹配的构造方法 -> 再创建子类对象 创建子类对象 -> 执行子类的构造方法块 => 执行子类相匹配的构造方法 */
-
子类对象内存分析图
- 子类对象和父类对象使用同一个地址值
快捷键
- CTRL + alt + M : 抽取方法
用同一个地址值
[外链图片转存中…(img-CmXyfJdl-1711292033266)]
快捷键
- CTRL + alt + M : 抽取方法