首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >抽象类诉。[Interface+Inheritance]

抽象类诉。[Interface+Inheritance]
EN

Stack Overflow用户
提问于 2017-09-04 12:41:52
回答 1查看 375关注 0票数 1

在Java的上下文中,类是否可以通过扩展另一个非抽象类来代替扩展抽象类的需要,并一起实现一个接口,两者结合在一起具有一个抽象类的所有方法(抽象和实现)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-04 12:48:06

在Java的上下文中,类是否可以通过扩展另一个非抽象类来代替扩展抽象类的需要,并一起实现一个接口,两者结合在一起具有一个抽象类的所有方法(抽象和实现)?

可以吗?是

应该这样吗?不是

抽象类可以替换为具体类,但您将更改系统。

请记住:抽象类不能实例化,也不应该实例化,因为它“具体”不足以对您的业务有意义。(如果是这样的话,它本来就不应该是一个抽象类)

如果将其具体化,则开发人员可能会使用(应该是什么)抽象类的实例。

如果你按你提议的方式改变它:

代码语言:javascript
复制
public void doSomething(MyAbstractClass instance){
  // here we know there is an implementation provided by a subclass
}

会变成

代码语言:javascript
复制
public void doSomething(MyShouldBeAbstractClass instance){
  // here they can pass instances of the base class, which might have unsupported methods
}

例如:

代码语言:javascript
复制
public String getConcreteInformation(){ 
  throw new UnsupportedOperationException("Should be called on a child class");
}

可能会导致很多讨厌的虫子

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46037339

复制
相关文章

相似问题

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