【问题标题】:Why abstract class and interface cannot be instantiated?为什么抽象类和接口不能实例化?
【发布时间】:2013-11-26 07:07:38
【问题描述】:

为什么我们不能创建抽象类和接口的实例?也就是说,抽象类和接口不能被实例化,只能由类实现。

【问题讨论】:

标签: c#


【解决方案1】:

我喜欢this answer

抽象类是一种特殊的类,不能 实例化。所以问题是为什么我们需要一个不能被 实例化?抽象类只能被子类化(继承 从)。换句话说,它只允许其他类从它继承 但不能实例化。优点是它强制执行某些 所有子类的层次结构。简单来说,就是一种 强制所有子类执行相同的合同 层次结构或标准。

接口不是类。它是一个实体,由 词界面。接口没有实现;它只有 签名,或者换句话说,只是方法的定义 没有身体。作为与 Abstract 类的相似之处之一,它是 用于定义所有子类或它的层次结构的协定 定义了一组特定的方法及其参数。

【讨论】:

  • 定义和答案是正确的,但不幸的是并不总是有帮助,因为如果一个人得到这个错误,他不知道哪些类“属于”抽象类,除非他自己写当然。例如,如果 EF 核心对您来说是新的,并且您想要获取 DbContextOptions 的实例,那么您不能,因为它是一个抽象类。现在如何找到相关的“具体”类?
【解决方案2】:

在正常情况下,这是因为创建类的实例需要为该实例留出一块内存。抽象类或接口不包含创建所需的所有信息它的一个实例。它只包含描述类所需的信息。

尝试创建抽象类或接口的实例就像花钱买一盒砖,但里面什么都没有。你只有外面,里面什么都没有。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-01
    • 2018-07-19
    • 2016-09-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多