【问题标题】:Why Abstract class is better? [duplicate]为什么抽象类更好? [复制]
【发布时间】:2014-07-13 14:25:47
【问题描述】:

我知道抽象类是为了继承而存在的,我们不能从中获取实例。行。我写了一个非抽象类。它的名字是A类。我继承了其他一些类。它们是 B 类和 C 类。

问题是这样的:为什么我必须将 A 类作为抽象类?无论如何,一个普通的类可以满足继承的要求。抽象类的优点是什么?

谢谢。

【问题讨论】:

标签: c# oop inheritance abstract-class


【解决方案1】:

首先,您提到了其中一个优点,您不能创建该类的实例,并且当您明确不想创建它的实例时使用抽象。 例如,您的 B 类和 C 类共享一些字段或方法,现在您创建一个包含这些方法和字段的抽象类,但同时这些方法不组成任何逻辑组,这就是为什么我们没有任何实例那个特定的类,因此我们声明它是抽象的。

您可以将其声明为普通类,其中没有复杂错误,但这不符合 OOP 的规则,因为任何人都可以创建该类的实例,这是多余且不必要的。

在 OOP 中,类的重点是收集通用特征/方法/字段并在对象名称下创建它们,抽象类不是我们想要与 B 和 C 类分开使用的东西(例如)。 希望对您有所帮助。

【讨论】:

    【解决方案2】:

    Abstract 可以用有thefiloe 表示强制重新实现类函数。

    也可以使用具有通用接口(多态性)将各种继承类存储到一个单一容器中(列表、字典树...)

    【讨论】:

    • 谁能解释一下为什么所有答案都被否决而没有任何评论。感觉真的不对。
    • 可能,因为non有任何“骨头上的肉”,只是陈述作者的意见。所以它应该是评论,而不是答案。
    • 这个问题相当直接。为什么要使用抽象类。鉴于我的回答是你为什么要这样做的 2 个主要情况。你怎么会有更多的肉?通过发明一个用例——编写关于它的假代码?这真的没用,他想要关于“为什么”的案例?
    • @Fawar 您可以获得您提到的相同好处,而无需使基类抽象。 OP 专门询问了将基类抽象化的好处。
    • 他的意思是纯粹抽象还是抽象为父继承类,因为这会改变答案-可能理解错了
    猜你喜欢
    • 1970-01-01
    • 2014-06-24
    • 2012-11-29
    • 2012-07-04
    • 2017-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-16
    相关资源
    最近更新 更多