一、继承
dart
1.1 概念:复用父类的属性和方法
关键字 extends
1.2 注意事项:
1. 如何继承:子类名 extends 父类名
2. 子类除了用父类的,也可以有自己都有的
3. Java的类是单继承 一个类只能直接继承另一个类
Java支持多重继承
A extends B
B extends C
A间接继承了C。所以可以使用C的资源
4.父类的私有资源 子类可以继承但是不能直接调用。可以通过get/set方法间接调用
5.查看类的继承关系
5.1 从上到下的 选中类 ctrl + h
5.2 选中要查看的类名,右键 Diagrams -> show Diagram
二、权限修饰符
arduino
private: 本类
缺省: 同包/本包
protected: 本包、非本包下子类中\内
public:本模块
三、方法的重写
markdown
为什么要重写?父类的方法不满足子类的需求
重写的规则:
1. 子类的访问权限修饰符 >=父类
2. 如果父类的方法返回值类型是void 或 8个基本,子类重写必须一致
如果父类的方法返回值类型是引用类型,则子类可以一致或<=父类的返回值类型
3. 方法名一致
4. 参数列表必须一致
快速重写:ctrl + o
toString方法:
来自于Object类
默认实现是输出对象的全类名@哈希码的十六进制
根据自身需求,重写,快速展示对象的属性值
四、继承关系下的构造器
scss
每一个类的构造器的首行默认隐式存在super()调用父类的无参构造。
super(实参列表) 调用父类的有参构造
this和super
kotlin
this:本类的对象。
区分实例变量和局部变量
调用本类的其他构造器
调用本类的实例方法、实例变量
super:父类的引用,可以访问父类的资源
调用父类的构造器
调用父类的实例方法
调用父类的实例变量
在一个方法中,访问一个变量:就近原则
局部->本类->父类
抽象
csharp
抽象概念:像缺不是,具备某些特征,但不完整。
关键字 abstract
修饰类、修饰方法
修饰类:
类不能创建对象。
不一定有抽象方法。
有构造器、实例方法、实例变量。要服务于子类
修饰方法:
抽象方法所在的类一定是抽象类
抽象方法只有声明,没有实现。
要求子类必须重写,子类不重写,那就变成抽象类。