目录
一、继承
继承就是共性的抽取,提高代码的复用率。
1、成员变量与方法的访问
- 在子类中访问成员方法时,优先访问子类,成员变量也是同理。
- 若是在子类与父类中有同名的方法或变量,使用super关键字可访问父类的方法和变量。
2、初始化时,父类与子类构造方法的执行
先去初始化父类,之后再去初始化子类。
所以在子类的构造方法中使用super关键字在第一条语句中,调用父类的构造方法,完成父类的构造。
super与this的相同与不同
相同:
- 都是Java中的关键字。
- 都不能在非静态成员方法中使用。
- 都是在构造方法中的第一条语句,但不能同时出现。
不同:
- super调用父类构造方法,this调用子类构造方法。
- super访问子类中父类特有的成员变量,this访问子类特有的成员变量。
- super()在构造方法中编译器默认提供,this()不会由编译器默认提供。
- super是在子类中继承下来的父类那一部分的引用,this是当前对象的引用。
3、final关键字
可以修饰类,也可修饰变量。
修饰类后,表示此类不可被继承;
修饰变量后,表示此变量只能被赋值一次,之后不能被修改。
4、组合
Java语言不支持多继承,也就是一个类只能继承一个1类,不能继承多个类。
但是有组合这种形式,也就是有a,b,c,d四个类,可以在d中声明出abc三个类型的变量,作为成员变量,这种形式简称has-a的形式。
// 轮胎类
class Tire{
// ...
}
// 发动机类
class Engine{
// ...
}
// 车载系统类
class VehicleSystem{
// ...
}
class Car{
private Tire tire; // 可以复用轮胎中的属性和方法
private Engine engine; // 可以复用发动机中的属性和方法
private VehicleSystem vs; // 可以复用车载系统中的属性和方法
// ...
}