我之前了解到抽象类可以扩展具体类。虽然我看不出JAVA设计人员为什么会这么做,但没关系。我还了解到,扩展具体类的抽象类可以使越权方法变得抽象。为什么?您能提供有用的用例吗?我正在努力学习设计模式,我不想错过任何东西。
下面是一个例子:
public class Foo
{
public void test()
{
}
}
public abstract class Bar extends Foo
{
@Override
public abstract void test();
}发布于 2014-01-07 12:10:26
如果我想要一组test()的默认实现(以便它们可以从Foo扩展),以及我想要强制提供它们自己的实现的那些类的子集(在这种情况下,在子类中使其抽象将强制实现这一点),这就变得非常有用。
当然,在这个例子中,另一种方法是在顶级类中而不是在子类中声明test()抽象,这就是您通常会做的事情--但在某些情况下,满足is--继承关系意味着,从设计的角度来看,有时这样做更有意义。这是很少见的,但你有时确实会看到。
另外,尽管是特例,但请记住,除非另有规定,否则所有类都隐式扩展Object。因此,如果包括这种情况,扩展具体类的抽象类毕竟也不是不寻常的!
发布于 2014-05-01 20:35:29
它基本上是有选择地重用一些现有的(遗产?)代码。
例如,concrete-class-C:假设有人已经创建了一个(当然是完整的实现)。
现在,由于您正在设计一个新的系统(它有一个concrete-class-C.抽象类--A),并且您分析了现有的系统,发现您将有一些方法与的方法几乎类似。但是您还发现,具体类-C的某些方法过于具体,您希望在抽象类-A的具体子类中强制实现这些方法。
因此,它使您能够有选择地选择哪些方法可以重用,哪些方法不能重用。
发布于 2014-01-07 11:58:55
使类扩展为抽象类以提供特定类型的实现。
例如:
https://stackoverflow.com/questions/20970980
复制相似问题