首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >抽象类扩展具体类

抽象类扩展具体类
EN

Stack Overflow用户
提问于 2014-01-07 11:54:54
回答 6查看 36.2K关注 0票数 32

我之前了解到抽象类可以扩展具体类。虽然我看不出JAVA设计人员为什么会这么做,但没关系。我还了解到,扩展具体类的抽象类可以使越权方法变得抽象。为什么?您能提供有用的用例吗?我正在努力学习设计模式,我不想错过任何东西。

下面是一个例子:

代码语言:javascript
复制
public class Foo 
{
    public void test()
    {
    }
}

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

回答 6

Stack Overflow用户

回答已采纳

发布于 2014-01-07 12:10:26

如果我想要一组test()的默认实现(以便它们可以从Foo扩展),以及我想要强制提供它们自己的实现的那些类的子集(在这种情况下,在子类中使其抽象将强制实现这一点),这就变得非常有用。

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

另外,尽管是特例,但请记住,除非另有规定,否则所有类都隐式扩展Object。因此,如果包括这种情况,扩展具体类的抽象类毕竟也不是不寻常的!

票数 21
EN

Stack Overflow用户

发布于 2014-05-01 20:35:29

它基本上是有选择地重用一些现有的(遗产?)代码。

例如,concrete-class-C:假设有人已经创建了一个(当然是完整的实现)。

现在,由于您正在设计一个新的系统(它有一个concrete-class-C.抽象类--A),并且您分析了现有的系统,发现您将有一些方法与的方法几乎类似。但是您还发现,具体类-C的某些方法过于具体,您希望在抽象类-A的具体子类中强制实现这些方法。

因此,它使您能够有选择地选择哪些方法可以重用,哪些方法不能重用。

票数 5
EN

Stack Overflow用户

发布于 2014-01-07 11:58:55

使类扩展为抽象类以提供特定类型的实现。

例如:

  • 抽象ClassA
  • ClassB扩展ClassB -提供了在ClassA中定义的抽象方法的具体实现
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20970980

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档