继承
# 为什么要继承(优点)
- 为了保留原有的功能,通过继承可以复用,不用每次都重头开始。
- 统一概念,概念复用。
- 对类进行层次管理。
# 继承的缺点
- 耦合度高。父类的改变直接影响到所有子类,而不需要通知子类。
建议
- 继承层次不要太深,三层即可。
- 尽量选择抽象类来继承。
# 构造方法
- 构造方法不会继承给子类,但是在创建子类对象时,自动调用父类构造方法,且父类构造方法先执行,子类构造方法后执行。
- 当子类采用无参构造方法创建对象时,默认调用父类的无参构造方法。如果父类没有无参构造方法,编译器会报错。解决办法1 为父类创建无参构造方法 2 使用Base指明调用父类哪个构造方法。
# 哪种情况适合使用继承关系来组织类的关系
- 两个或更多个类从概念上来说是一致的。
- 数据和行为上是一致的。
- 会不会这几个类型统一处理。
# 抽象类
语法
- 用abstract修饰的类即为抽象类。
- 抽象类不能new创建对象。
- 抽象类中既能包含抽象成员,也允许有具体成员。
语义
- 抽象类表示一个抽象概念。
- 表示概念中拥有的共性行为数据。
- 抽象只表示做什么,拥有什么数据,但往往不表示具体做法,不表达数据具体取值。
- 用于做基类,统一所有子类,管理子类。
# 什么时候适合用抽象类
- 当表示一个抽象概念时。
- 当不希望创建对象时。
- 当有行为不需要实现的时候。
- 当有多个概念需要统一管理的时候。
- 当有一些行为在做法上有多种可能时,但又不希望客户具体了解其情况。
# 抽象方法
语法
- 用abstract修饰并且没有实现的方法,只有声明没有实现。
- 抽象方法只能出现在抽象类中。
- 抽象方法在本类中不实现,推迟到子类实现,子类必须重写override实现。
语义
- 抽象方法表示抽象行为,只关注本身,不关注行为实现。
- 抽象方法描述做什么,不描述怎么做。
编辑 (opens new window)
上次更新: 2025/02/10, 20:20:37