Why Abstract class is better?
本问题已经有最佳答案,请猛点这里访问。
我知道抽象类是为继承而存在的,我们不能从它们中获取实例。好啊。我写了一个不抽象的类。它的名字是一个类。我还继承了其他一些类,它们是B类和C类。
问题是:为什么我必须做抽象类?无论如何,普通类可以满足继承的要求。抽象类的优点是什么?
谢谢。
首先,您提到了其中一个优点,您不能创建该类的实例,并且在显式不想创建该类的实例时使用抽象。例如,您的B和C类共享一些字段或方法,现在您创建了一个包含这些方法和字段的抽象类,但同时这些方法不构成任何逻辑组,这就是为什么我们没有该特定类的任何实例,因此我们将其声明为抽象的。
您可以将其声明为一个普通类,其中没有复杂错误,但不知何故,它不遵循OOP规则,因为这样任何人都可以创建该类的实例,这是多余的和不必要的。
在OOP中,类的要点是收集公共特性/方法/字段并在对象名下创建它们,抽象类不是我们希望与B类和C类分开使用的东西(例如)。希望有帮助。
抽象可以用来强制类函数的重新实现。
它还可以使用一个公共接口(多态性)将各种继承类存储到单个容器中(列表、dict树…)