一,继承
关键extends,用这个关键字我们可以让一个类和另一个类建立起父子关系
public class Student extends People{}
我们称子类为student,父类为people
作用,子类继承父类就可以使用父类的属性和方法
当我们开发过程中会有很多相同的属性和方法
继承
继承
提高了代码的复用性,减少冗余
比如我们要做一个系统,其中系统角色分为学生,老师
学生(姓名,学号,性别,查看成绩)
老师(姓名,教师号,性别,查看成绩,录入成绩)
所以我们就可以将相同的属性和方法放在一个父类中,通过继承来实现功能
- 内存中是如何工作的
在堆内存是是一个地址,但是这个地址空间中分为两个空间,一个是父类(super)空间,一个是子类空间(this)
二,继承的特点
- 1子类可以继承父类的属性和行为,但是子类不能继承父类的构造器
- 2java只能继承一个直接父类
- 3java不支持多继承,但是支持多层继承
- 4java所有的类都是Object类的子类
子类是否可以继承父类的私有成员呢?
其实是继承了的,只是不能直接访问
子类是否可以继承父类的静态成员
并不是继承关系,static修饰的本身就是共享的,只有一份
继承后在子类中访问成员变量/方法采用就近原则
先找子类局部,再子类成员范围,再子类
如果子类和父类中出现了重名的成员,会优先使用子类的,那么我们想使用父类的该怎们去做呢
在子类中访问父类的成员用super
三,方法重写
在继承体系中子类出现了和父类一模一样的方法声明,我们就称子类这个方法是重写的方法
应用场景
- 当子类需要父类的功能,但父类的该功能不完全满足自己的需求
- 子类可以重写父类中的方法
旧手机(父类)的功能只能是打电话,发信息
新手机(子类)的功能需要基本的打电话下支持视频,基本的发信息需要发送语言
image.png
重写方法的名称,形参列表必须与被重写方法必须一模一样
私有方法子类不允许被重写
子类重写父类方法时,访问权限必须大于等于父类
四,子类继承后构造器的特点
- 子类中所有的构造器默认都会先访问父类中无参的构造器,再执行自己的
这是为什么呢?(先有爸再有儿子)
子类在初始化的时候可能会用到父类的数据,如果这时父类的数据并没有完成初始化,那么子类就无法使用父类的数据
-
子类初始化之前,一定要调用父类的构造器先完成父类数数据空间的初始化
子类的构造器默认第一行都有一个super()默认去找父类的无参构造器去执行 -
super调用父类的有参数构造器作用
1 初始化继承自父类的数据
this调用本参数构造器
如我们让用户填写个人信息年纪不填写时默认给18
public Student(String name){
this(name,"18");
}






网友评论