2016-01-24 93 views
6

我看到它写在大多数地方 -接口抽象的所有方法?

"All of the methods in an interface are abstract." 

但是接口也可以包含default methodsstatic methods和方法体存在默认的方法和静态方法。

那么界面抽象的所有方法都是这样吗?

+4

Android尚未使用Java 8 **,但是目前没有默认方法;全部抽象。 –

回答

6

这是正确的

其所有的方法都是抽象的访问修饰符,irregardless。

一个完美的解释由@coder

接口就像是一个 “纯粹的” 抽象类。该类和所有其方法是抽象的。一个抽象类可以实现 方法,但该类本身不能实例化(可用于继承和DRY之后的 )。

对于一个接口,由于没有任何实现,他们是 对他们的目的有用:合同。如果你实现接口 那么你必须在接口中实现这些方法。

所以区别是抽象类可以实现方法 而接口不能。

他们分开的原因是一个班级可以实现几个 接口。 Java和C#将一个类限制为单个父类的固有类。有些语言允许你继承多个类,你可以通过一个“纯粹”的抽象类完成一个接口的工作。但是多重继承有它的问题, 即可怕的钻石问题

看一看Oracle的文档上Abstract methods and classes.

6

从Java 8,接口也可以包含默认的方法,并用抽象方法以及静态方法。方法体存在默认和静态方法。

Java 8最大的设计变化之一是与 接口的概念。在Java 7之前,我们只能在 的接口中使用方法声明。但是从Java 8开始,我们可以在接口中使用默认方法和静态方法。

接口的默认方法

对于接口中创建一个默认的方法,我们需要使用 “默认”的关键字与方法签名。

接口静态方法

静态方法是类似的违约只是我们不能 重写它们在实现类的方法。此功能可帮助我们在 中避免因子 类中实施不当而导致的不良结果。

欲了解更多请查看this

0

接口中的所有方法都是抽象的。这个陈述是真的。 接口必须具有抽象方法才能应用多重继承。

-1

接口中的所有方法摘要,默认情况下在JAVA领域的静态公共最终 和所有的成员都公共

并且我们不能让接口的成员专用受保护

0

根据Jeanne Boyarsky的说法,这是错误的& Scott Selikoff的书OCA:Oracle®Certified Associate Java SE 8 Programmer I学习指南考试1Z0-808。

。 。 。因为在Java 8之前,假定所有接口方法 都是抽象的。由于Java 8现在包含默认方法和静态方法,并且它们从不抽象,所以不能假定编译器将抽象修饰符隐式应用于所有方法。 (本书的第346页)

0

java接口中的所有方法都是抽象的,只有当它们显式声明为静态时o默认情况下它们不是抽象的。

相关问题