抽象类的用途/应用是什么?

时间:2013-11-24 00:00:48

标签: java

我知道你不能创建Abstract类的实例,而Abstract类的子类可以继承第一个Abstract类的继承属性,但是当你拥有普通的Super类时,我无法理解为什么Abstract类需要存在。他们的子课程。 Abstract类的好处/应用是什么?

3 个答案:

答案 0 :(得分:3)

抽象类防止“不完整”的抽象实现被实例化。

例如,抽象类可能没有任何实现的抽象方法。实际调用这样的方法是没有效的。

或者,抽象类可能没有任何实际的抽象方法 - 但仍可能需要在子类API中添加其他功能,因为它很有用。

abstract关键字用于这两个原因&防止抽象类被实例化。

答案 1 :(得分:1)

abstract class Animal { }
class Dog extends Animal { }
class Cat extends Animal { }

如果可以实例化它,Animal会是什么?

当超级类不是要实例化时,你应该使用abstract类:它可以作为扩展类依赖的基础,但它本身并不代表任何东西。< / p>

通过让Animal类作为DogCat的基类,您可以在其中定义公共行为,而不必在每个子类中重新定义它。考虑NameSpeciesFirstSighting等属性:这些属性将在CatDog中使用,所以为什么不将它们放在基类中以避免额外的工作和不一致的问题?

另一方面,你也不想创建一个新的Animal:它没有说明动物的类型。这就是你成为abstract的原因。

答案 2 :(得分:0)

抽象类/接口的主要目的是模拟问题的抽象 - 设计。然后真正的实现将根据抽象行为。