一、继承
1.继承基本介绍
继承可以解决代码复用
,
让我们的编程更加靠近人类思维
.
当多个类存在相同的属性
(
变量
)
和方法时
,
可以从这些类中 抽象出父类,
在父类中定义这些相同的属性和方法,所有的子类不需要重新定义这些属性和方法,只需要通过
extends
来声明继承父类即可。
2、继承的基本语法
3、继承给编程带来的便利
1) 代码的复用性提高了
2)
代码的扩展性和维护性提高了
4、继承的深入讨论/细节问题
1)
子类继承了所有的属性和方法,非私有的属性和方法可以在子类直接访问
,
但是私有属性和方法不能在子类直接访问,要通过父类提供公共的方法去访问
2)
子类必须调用父类的构造器, 完成父类的初始化
3)
当创建子类对象时,不管使用子类的哪个构造器,默认情况下总会去调用父类的无参构造器,如果父类没有提供无 参构造器,则必须在子类的构造器中用 super 去指定使用父类的哪个构造器完成对父类的初始化工作,否则,编译不会通过
三、重写
4)
如果希望指定去调用父类的某个构造器,则显式的调用一下
: super(
参数列表
)
5) super
在使用时,必须放在构造器第一行
(super
只能在构造器中使用
)
6) super()
和
this()
都只能放在构造器第一行,因此这两个方法不能共存在一个构造器
7) java
所有类都是
Object
类的子类
, Object
是所有类的基类
.
8)
父类构造器的调用不限于直接父类!将一直往上追溯直到
Object
类
(
顶级父类
)
9)
子类最多只能继承一个父类
(
指直接继承
)
,即
java
中是单继承机制。
思考:如何让
A
类继承
B
类和
C
类? 【
A
继承
B
,
B
继承
C
】
10)
不能滥用继承,子类和父类之间必须满足
is-a
的逻辑关系
5、继承的本质分析
6、返回信息
这时请大家注意,要按照查找关系来返回信息
(1)
首先看子类是否有该属性
(2)
如果子类有这个属性,并且可以访问,则返回信息
(3)
如果子类没有这个属性,就看父类有没有这个属性
(
如果父类有该属性,并且可以访问,就返回信息
..)
(4)
如果父类没有就按照
(3)
的规则,继续找上级父类,直到
Object...
二、super
1、基本介绍
super 代表父类的引用
,用于访问父类的属性、方法、构造
器
2、基本语法
3、用法
找 cal 方法时(cal() 和 this.cal()),顺序是:
(1)先找本类,如果有,则调用
(2)如果没有,则找父类(如果有,并可以调用,则调用)
(3)
如果父类没有,则继续找父类的父类
,
整个规则,就是一样的
,
直到
Object
类
提示:如果查找方法的过程中,找到了,但是不能访问, 则报错
, cannot access
如果查找方法的过程中,没有找到,则提示方法不存在
其实,super就相当于上述步骤去掉(1)
4.super带来的便利与super的细节
5、super与this的比较
三、重写
1、基本介绍
2、注意事项和使用细节
3、重载和重写的比较