继承
(1)把多个类中相同的成员给提取出来定义到一个独立的类中。然后让这多个类和该独立的类产生一个关系,
这多个类就具备了这些内容。这个关系叫继承。
格式: class 子类名 extends 父类名 {}
(2)Java中继承的特点
A:Java中类只支持单继承
B:Java中可以多层继承
(3)继承的注意事项:
A:子类不能继承父类的私有成员
B:子类不能继承父类的构造方法,但是可以通过super去访问
C:不要为了部分功能而去继承
(4)Java继承中的成员关系
A:成员变量
如果子类的成员变量名称和父类中的成员变量名称一样
子类的方法访问变量的查找顺序:
在子类方法的局部范围找,有就使用。
在子类的成员范围找,有就使用。
在父类的成员范围找,有就使用。
找不到,就报错。
B:构造方法
a:子类的构造方法默认会去访问父类的无参构造方法
是为了子类访问父类数据的初始化
访问构造方法时this(...)和super(...)必须出现在第一条语句上,否则就可能对父类数据进行了多次初始化.
b:父类中如果没有无参构造方法
子类通过super去明确调用带参构造
子类通过this调用本身的其他构造,但是一定会有一个去访问了父类的构造
让父类提供无参构造
C:成员方法
a:子类的成员方法和父类中的成员方法名称不一样,这个太简单
b:子类的成员方法和父类中的成员方法名称一样,这个怎么访问呢?
通过子类对象访问一个方法的查找顺序:
在子类中找,有就使用
在父类中找,有就使用
找不到,就报错
this:代表当前类的对象引用
super:代表父类存储空间的标识(可以理解为父类的引用,通过它可以访问父类成员)
(5)
一个类的初始化过程:成员变量初始化-->默认初始化-->显示初始化-->构造方法初始化
子父类的构造执行过程:静态代码块>构造代码块>构造方法:父类>子类
分层初始化
方法重写override:子类中出现了和父类种方法声明一模一样的方法。
要重写调用父类中的方法可以用关键字super.方法名来调用
父类的私有方法不能被重写
方法重载overload:本类中出现方法名一样,参数列表不同的方法,与返回值无关。