目的:
(1)代码复用:
延续父类的特征
(2)代码的扩展:
扩展父类没有的特征
(3)表示is-a的关系
子类 is a 父类的派别
例如:学生 is a 人
如何继承
语法格式:
1 【修饰符】 class 父类{
2
3 }
4 【修饰符】 class 子类 extends 父类{
5
6 }继承的特点
1、Java只支持单继承,每一个子类只有一个直接父类
2、Java支持多层继承,父类还可以有父类
3、子类会继承父类所有特征,包括成员变量、成员方法,哪怕是私有的,私有的在子类中无法直接使用
4、子类不会继承父类的代码块、构造器等
5、但是子类一定会调用父类的实例初始化方法
继承时成员变量问题
1、子类会继承父类的所有的成员变量
子类创建对象时,在堆内存中是要为从父类继承的成员变量分配内存空间
2、如果子类声明了与父类同名的成员变量
此时,如果想要访问父类的同名的成员变量,那么可以使用super.,但是前提条件,这个成员变量没有私有化。如果私有化了,只能通过父类中的get/set来操作它
继承时成员方法问题
1、子类会继承父类的所有的成员方法
2、如果父类的某个方法的方法实现不适用于子类,那么子类可以选择重写
重写的要求:
(1)方法名必须相同
(2)形参列表必须相同
(3)返回值类型
void和基本数据类型:必须相同
引用数据类型:<=
(4)权限修饰符:>=
(5)其他修饰符:不能重写子类中不可见的private,如果跨包的话,缺省的也不能被重写