Abstract类的确切用法是什么?在普通的类中是不可能做同样的事情,因为它是一个抽象类?
答案 0 :(得分:24)
使用抽象类提供一些具体实现但不允许实例化。如果它不能独立存在,你总是可以实例化一个没有意义的普通类。同时,如果在所有实现类中都有相同的具体实现,那么接口可能还不够。一个抽象类就足够了。
答案 1 :(得分:19)
当您有一些希望子类继承的基本功能时,会使用抽象类,但实例化基类是没有意义的。例如,如果你有一个像Shape基类的东西,你可以有一些内置的实现,子类可以使用它们以及你希望子类实现的接口方法。但是,创建Shape对象可能没有意义。抽象类为您提供此功能。抽象类使用的另一个很好的例子是abstract factory pattern。
答案 2 :(得分:5)
常规课程要求您提供所有方法的实施 接口要求您不为所有方法提供任何实现。
抽象类是唯一允许您拥有包含实现的方法的类,并且具有不提供实现的方法,但需要继承类来提供实现。
您可以在没有实现的情况下添加方法,这是您无法实例化抽象类的原因:您只能实例化具有其所有方法实现的内容。
答案 3 :(得分:1)
与常规类不同,abstract
类可以包含abstract
个方法。它们的行为很像界面成员。
同时,他们可以做普通类可以做的其他事情:他们可以实现方法,包含字段和&嵌套类型,派生自另一个类等。