我之前了解到抽象类可以扩展具体类。尽管我没从JAVA设计师那里看到原因,但是没关系。我还了解到,扩展具体类的抽象类可以使重写的方法抽象。为什么?您可以提供有用的用例吗?我正在尝试学习设计模式,我不想错过任何东西。
这是示例:
public class Foo { public void test() { } } public abstract class Bar extends Foo { @Override public abstract void test(); }
如果我有一组想要默认实现的类test()(以便它们可以从扩展Foo),并且想要强制提供自己的实现(在这种情况下使其抽象为子类会强制执行此操作。)
test()
Foo
当然,此示例中的另一种方法是test()在顶级类而不是子类中声明抽象,而这通常是您要做的-但是在某些情况下,满足is- a继承关系意味着它从设计角度来看,偶尔这样做会更有意义。很少见,但有时您会看到它。
顺便说一句,尽管是一种特殊情况,但请记住,Object除非另有说明,否则所有类都隐式扩展。因此,如果包括这种情况,扩展具体类的抽象类毕竟不是那么寻常!
Object