将超类作为Java中的抽象类的目的

时间:2014-07-28 06:22:14

标签: java oop inheritance abstract-class superclass

作为抽象类的超类为其所有子类创建了一个开销,以强制定义其抽象方法。我知道它是非常基本的,但我需要知道为什么程序员通常将超类作为抽象类,尽管我们可以使用超类作为非抽象类来做类似的事情。

5 个答案:

答案 0 :(得分:2)

抽象超类是提供可重用代码的一种方法。

  • 您可以扩展抽象类并继承代码。这有时比使用静态方法或对象组合来共享代码更方便。

  • 抽象类可以修复"部分代码(通过使其成为最终)。这被称为"模板方法"模式(对于无法提供最终方法的接口,这是不可能的。)

当然,您也可以使用非抽象超类来实现这两者。

抽象类具有额外的好处,它不必提供完整的实现(这对于自己实例化是有意义的),某些部分可以保留指定但未实现(抽象方法)。

答案 1 :(得分:0)

假设您有一个共同的行为,其中只有小细节特定于实现 - 然后您可以将所有常见行为放在抽象基类中,并具有实现类需要填充的一些抽象方法。

例如,抽象存储库基类可能会实现与服务器等联系的所有细节,具体的存储库只需要填写详细信息以从右表中读取正确的对象等。

答案 2 :(得分:0)

  

Abstarct类用于“抽象”。意味着如果某些类具有共同的行为,而不是在每个类中编写相同的东西,则将其写入一个类并要求其他类使用它[通过将类作为抽象类的子类]。这只不过是继承。 总结:当您需要某些类的默认行为时使用抽象类当您希望不同的行为使用不同的类时使用接口。

For More explanations Refer below links:

http://www.javacoffeebreak.com/faq/faq0084.html

http://docs.oracle.com/javase/tutorial/java/IandI/abstract.html

答案 3 :(得分:0)

抽象类的几种用法:

  1. 当在对象之间传输数据时充当协议,两个客户不需要知道其他类的结构。 -----就像界面

  2. 定义抽象操作,它隐藏了具体类的详细实现,例如,我有一个名为AbstractPayment的类,它定义了从客户收取资金的操作,然后它的具体内容可能是:PaypalPayment ,支付宝付款,银行付款等。但是,对于班级客户,它只需要知道AbstractPayment。 一段时间后,如果您需要添加另一个ConcretePayment,或修改另一个付款,客户类将不会更改。

答案 4 :(得分:-1)

抽象主要用于设计模式,我建议你阅读以下内容:

Abstract Factory Pattern

STO