在Java中将超类作为抽象类的目的
作为抽象类的超类为其所有子类强制定义其抽象方法带来了开销。我知道这是非常基本的,但我需要知道为什么程序员通常将超级类作为抽象类,尽管我们可以使用超级类作为非抽象类来做类似的事情。抽象主要用于设计模式,我建议您阅读以下内容:在Java中将超类作为抽象类的目的,java,oop,inheritance,abstract-class,superclass,Java,Oop,Inheritance,Abstract Class,Superclass,作为抽象类的超类为其所有子类强制定义其抽象方法带来了开销。我知道这是非常基本的,但我需要知道为什么程序员通常将超级类作为抽象类,尽管我们可以使用超级类作为非抽象类来做类似的事情。抽象主要用于设计模式,我建议您阅读以下内容: 假设您有一个常见的行为,其中只有实现特定的小细节-然后您可以将所有常见的行为放在一个抽象基类中,并拥有一些实现类需要填充的抽象方法 例如,抽象存储库基类可能实现与服务器联系的所有详细信息等,而具体存储库只需填写详细信息即可从正确的表中读取正确的对象等。抽象超类是提供可重用代
假设您有一个常见的行为,其中只有实现特定的小细节-然后您可以将所有常见的行为放在一个抽象基类中,并拥有一些实现类需要填充的抽象方法
例如,抽象存储库基类可能实现与服务器联系的所有详细信息等,而具体存储库只需填写详细信息即可从正确的表中读取正确的对象等。抽象超类是提供可重用代码的一种方法
- 您可以扩展抽象类并继承代码。这有时比使用静态方法或对象组合来共享代码更方便
- 抽象类可以“修复”部分代码(通过使其成为最终代码)。这被称为“模板方法”模式(对于无法提供最终方法的接口,这是不可能的)
有关更多说明,请参阅以下链接:
http://www.javacoffeebreak.com/faq/faq0084.html
http://docs.oracle.com/javase/tutorial/java/IandI/abstract.html
抽象类的几种用法:
我也可以用接口实现同样的功能。接口不包含实现(至少直到最近…)。你不能在界面中用最后的方法“修复”部分。你能给现实世界中两个抽象类和接口的例子吗?+ 1我不认为“模板方法”是使用抽象类的好处之一。谢谢!你能给出抽象类和接口的真实例子吗?抽象类和接口都是不同的。我想你知道这件事。抽象类可以有普通的方法,而接口只能有抽象的方法。抽象类方法用于数据抽象,在这种抽象中,您只能知道此方法将执行的操作,但无法知道该方法背后的逻辑。如果你有抽象方法private abstract ab(),那么另一个开发人员可以根据他/她的要求调用ab(),但该开发人员看不到该方法背后的真实逻辑。我只想用一个真实世界的例子让两者都能很好地理解。你能给出抽象类和接口的真实世界的例子吗?