继承

# 为什么要继承(优点)

  • 为了保留原有的功能,通过继承可以复用,不用每次都重头开始。
  • 统一概念,概念复用。
  • 对类进行层次管理。

# 继承的缺点

  • 耦合度高。父类的改变直接影响到所有子类,而不需要通知子类。

建议

  • 继承层次不要太深,三层即可。
  • 尽量选择抽象类来继承。

# 构造方法

  • 构造方法不会继承给子类,但是在创建子类对象时,自动调用父类构造方法,且父类构造方法先执行,子类构造方法后执行。
  • 当子类采用无参构造方法创建对象时,默认调用父类的无参构造方法。如果父类没有无参构造方法,编译器会报错。解决办法1 为父类创建无参构造方法 2 使用Base指明调用父类哪个构造方法。

# 哪种情况适合使用继承关系来组织类的关系

  • 两个或更多个类从概念上来说是一致的。
  • 数据和行为上是一致的。
  • 会不会这几个类型统一处理。

# 抽象类

语法

  • 用abstract修饰的类即为抽象类。
  • 抽象类不能new创建对象。
  • 抽象类中既能包含抽象成员,也允许有具体成员。

语义

  • 抽象类表示一个抽象概念。
  • 表示概念中拥有的共性行为数据。
  • 抽象只表示做什么,拥有什么数据,但往往不表示具体做法,不表达数据具体取值。
  • 用于做基类,统一所有子类,管理子类。

# 什么时候适合用抽象类

  • 当表示一个抽象概念时。
  • 当不希望创建对象时。
  • 当有行为不需要实现的时候。
  • 当有多个概念需要统一管理的时候。
  • 当有一些行为在做法上有多种可能时,但又不希望客户具体了解其情况。

# 抽象方法

语法

  • 用abstract修饰并且没有实现的方法,只有声明没有实现。
  • 抽象方法只能出现在抽象类中。
  • 抽象方法在本类中不实现,推迟到子类实现,子类必须重写override实现。

语义

  • 抽象方法表示抽象行为,只关注本身,不关注行为实现。
  • 抽象方法描述做什么,不描述怎么做。
上次更新: 2025/02/10, 20:20:37
最近更新
01
Git问题集合
01-29
02
安装 Nginx 服务器
01-25
03
安装 Docker 容器
01-25
更多文章>
×
×