闲来无事复习一下哈哈哈哈哈
继承概念
继承概念
一个类不用自己定义属性和方法,就已经具备了以一个类的属性和方法
如何产生继承关系
//extends 关键字
class Sub extends Super{
}
继承特点及好处
继承特点&好处
a. 提高代码重用性能
b. 提高代码扩展性能和维护性
c. 为多态打下基础
特点
a. 子类继承了父类所有属性和方法,只是私有的不能直接访问而是通过公共的方法访问比如getName() setName()方法
b. 子类不能继承父类构造器(类似初始化的方法)
c. 不能滥用继承,子类和父类必须有一个is-a的关系
d. java直接继承只能是单继承
e. 子类的继承不限与直接父类
f. java中所有类直接或者间接继承了Object类
子类构造器特点
因为子类只继承了父类的成员&方法, 子类没有继承到父类的构造器,但是要求子类必须调用父类构造器
如果父类没有无参构造器子类创建时候会报错
a. 调用子类的无参&无参构造器,实际也默认先调用了父类的无参构造器
b. 如果父类没有无参构造器,子类必须显示的先调用父类的有参数构造器
//这里引出了super关键字 代表父类的引用
super("color", "name");
super关键字的特点&使用
super:父类的引用,用于访问父类的属性,方法,构造器
语法
访问父类的属性: super.属性名=属性值
访问父类的方法:super.方法(实参列表)
访问父类的构造:super(实参列表)
子类需要显示调用父类的构造器时候,必须通过super关键字
当前类的成员和父类的成员重名时候,使用super关键字区分
super关键字的访问不限与直接父类,可以访问"爷爷辈"
如果直接父类和间接父类(爷爷类)有相同的成员,super采用就近原则,默认访问的是父类的成员
super指父类引用,没有创建父类对象
super关键字&this 关键字的对比
1. this代表当前类对象, super是父类的引用,有点类似父类的指针
2. 在子类中,this和super可以访问的成员不一样,如下图
3. 注意this 和super不能出现一个构造器中,二者只能出现一个
4. this 和super 使用语法一样,而且必须放在构造器首行
子类对象的创建过程
- 子类对象创建时,先加载子类及其直接&间接父类
- 初始化对象
整个过程如下图:
方法的重写&重载
子类方法覆盖父类的方法为重写
方法的重写的要求
发生在父子类之间
方法名和参数列表必须相同
返回值类型相同或者子类方法的返回值为父类方法返回值的子类(jdk5之前返回值必须相同)
子类的方法修饰符和父类相同或者比父类的大
方法的重载
方法的重写和重载发生在同一个类中
方法名必须相同,参数列表必须不同
方法重载和返回值无关
修饰符没要求
二者对比