什么是抽象类?

2022-09-03 16:49:55

当我学习抽象类时,据说WT(H*)!!!

问题:

  1. 创建无法实例化的类有什么意义?
  2. 为什么会有人想要这样的课程?
  3. 抽象类在什么情况下变得必要?

**如果你知道我的意思*


答案 1
  1. 最常见的是用作基类或接口(有些语言有单独的构造,有些则不知道) - 它不知道实现(即由子类/实现类提供)interface
  2. 抽象和重用
  3. 当基类不能为方法提供有意义的默认实现时(但允许子类重用实现的非抽象部分;任何字段,非抽象方法等)

例如:

public abstract class Stream { /* lots of code, some abstract methods */ }

到底什么是溪流本身什么样的流?流到文件?网络?内存缓冲区?每个可能具有不同和不相关的读取/写入方式,但提供通用的API。创建一个 是没有意义的,但是通过类,您可以在不知道详细信息的情况下编码到API:StreamabstractStream

Stream s = CreateStream(...); // I don't *care* what kind of stream
s.Write(new byte[] {1,2,3,4,5});
s.Close();

答案 2

抽象(基)类为您提供了半具体的类,以实现类层次结构。它们允许您执行以下几项操作:

  1. 整合常见行为(与仅定义合约的接口不同)
  2. 为函数提供默认(和可选的可重写)实现
  3. 为继承层次结构提供明确定义的分支点
  4. 控制 IoC 注入点

这个清单还在继续。