首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java 9接口与类

Java 9接口与类
EN

Stack Overflow用户
提问于 2017-06-01 03:53:56
回答 5查看 8.4K关注 0票数 43

由于Java9将允许我们在接口中也定义privateprivate static方法,那么interfaceclass还有什么区别呢?此外,Java是否正在缓慢地走向多重继承?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2017-06-02 06:02:02

Java 9中的私有接口方法的行为与其他私有方法完全一样:它们必须有一个主体(即使在抽象类中),不能被子类调用或重写。因此,它们并不真正地与继承进行交互。说到哪一个(特别是多重继承),有(至少?)有三种:

  • 继承类型意味着一种类型可以是另一种类型,例如StringObject。Java允许从第一天(通过接口)多次继承类型。
  • 行为继承意味着一种类型可以继承另一种类型的行为。在Java 8之前,只有类可以实现方法,因此只有这类继承。与Java 8一起出现的是默认方法,它允许接口实现方法,从而为Java提供了多个行为继承。
  • 状态继承意味着一个类型继承另一个类型的内部状态(即字段)。目前(Java 9和当前为未来Java版本提出的一切),只有类可以具有状态,因此只有这类继承。

如您所见,私有接口方法在这里不添加任何内容。

关于接口和类如何比较的问题,有两个主要区别:多继承和状态。接口支持前者,类可以有后者。由于状态在典型的OOP中是很重要的,所以类仍然是相关的。

如果有一种方法可以让一个接口强制一个实现拥有一个特定的非公开字段,或者直接定义一个字段本身,那么游戏就会改变,并且接口可以与类竞争。

票数 46
EN

Stack Overflow用户

发布于 2017-06-01 04:12:32

私有方法不被子类继承,因此此特性不影响实现类。我相信接口中的私有方法允许我们在默认方法之间共享代码。

Java接口仍然不能有非静态成员。这是一个很大的区别,而不是多重继承,海事组织。

票数 29
EN

Stack Overflow用户

发布于 2017-06-01 04:17:05

Java 9接口仍然不能包含字段和构造函数。这在类和接口之间造成了巨大的差异,因此Java 9远不是多重继承。

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

https://stackoverflow.com/questions/44298261

复制
相关文章

相似问题

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