一尘不染

抽象类扩展了具体类

java

我之前了解到抽象类可以扩展具体类。尽管我没从JAVA设计师那里看到原因,但是没关系。我还了解到,扩展具体类的抽象类可以使重写的方法抽象。为什么?您可以提供有用的用例吗?我正在尝试学习设计模式,我不想错过任何东西。

这是示例:

public class Foo 
{
    public void test()
    {
    }
}

public abstract class Bar extends Foo
{
   @Override
   public abstract void test();
}

阅读 222

收藏
2020-12-03

共1个答案

一尘不染

如果我有一组想要默认实现的类test()(以便它们可以从扩展Foo),并且想要强制提供自己的实现(在这种情况下使其抽象为子类会强制执行此操作。)

当然,此示例中的另一种方法是test()在顶级类而不是子类中声明抽象,而这通常是您要做的-但是在某些情况下,满足is-
a继承关系意味着它从设计角度来看,偶尔这样做会更有意义。很少见,但有时您会看到它。

顺便说一句,尽管是一种特殊情况,但请记住,Object除非另有说明,否则所有类都隐式扩展。因此,如果包括这种情况,扩展具体类的抽象类毕竟不是那么寻常!

2020-12-03