为了账号安全,请及时绑定邮箱和手机立即绑定

何时使用抽象类或接口?

何时使用抽象类或接口?

HUH函数 2019-07-24 19:26:07
何时使用抽象类或接口?为什么要创建抽象类或接口类,或者何时应该使用抽象类或接口类?
查看完整描述

3 回答

?
拉风的咖菲猫

TA贡献1995条经验 获得超2个赞

当您只想声明类必须具有哪些方法和成员时,使用接口。任何实现该接口的人都必须声明并实现该接口列出的方法。

如果您还想要一个默认实现,请使用抽象类。扩展抽象类的任何类都必须只实现其抽象方法和成员,并且将具有抽象类的其他方法的一些默认实现,您可以覆盖或不覆盖它们。

--EDIT - 忘了提,Earwicker提醒我

最后,您可以根据需要实现任意数量的接口,但只能扩展一个类(无论是抽象的还是抽象的)。在选择之前请记住这一点。


查看完整回答
反对 回复 2019-07-24
?
慕慕森

TA贡献1856条经验 获得超17个赞

关键的区别在于,您可以implement在一个类中使用多个接口,但只能extend使用一个抽象类。这是因为抽象类还可以定义存储数据的字段,而接口则不能。


查看完整回答
反对 回复 2019-07-24
?
MYYA

TA贡献1868条经验 获得超4个赞

抽象类是一个类,它至少有一个抽象方法,或者你也可以将所有方法都作为抽象方法。显然它无法实例化。您必须从一个抽象类继承并在继承类中实现抽象方法(即扩展抽象类的类)。

接口根本不是类(因此不要将它们称为接口类)。接口定义方法的签名而无需任何实现。接口也没有成员字段。如果在类中实现接口,则必须为接口提供的所有方法提供实现。

为某些东西定义一个通用API是有意义的,它可以有完全不同的实现。抽象类对于主要相同的类更有用,但有一些细微的差别。您可以将两种方法结合起来

一个很好的例子是Java类库的集合框架。您有接口List,它定义了Lists的行为方式。一些实现例如是ArrayList和LinkedList。因为它们的行为相似,所以两者都相同的东西在抽象类AbstactList中实现,都继承了它。


查看完整回答
反对 回复 2019-07-24
  • 3 回答
  • 0 关注
  • 549 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信