接口的所有方法都是抽象的吗?

时间:2016-01-24 08:38:01

标签: java android interface abstract-class

我看到它写在大多数地方 -

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

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

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

7 个答案:

答案 0 :(得分:8)

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

  

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

     

接口默认方法

     

要在界面中创建默认方法,我们需要使用   带有方法签名的“default”关键字。

     

接口静态方法

     

静态方法与默认方法类似,但我们不能   在实现类中覆盖它们。此功能可以帮助我们   避免不良后果导致儿童执行不力   类。

有关详情,请查看this

答案 1 :(得分:7)

这是正确的

所有方法都是抽象的,无论其访问修饰符如何。

@coder的完美解释:

  

接口就像一个“纯粹”的抽象类。该方法的类和 所有 都是抽象的。抽象类可以实现   方法但类本身无法实例化(对于   继承和跟随DRY)。

     

对于接口,因为根本没有任何实现   对他们的目的有用:合同。如果您实现了接口   那么你必须在界面中实现这些方法。

     

所以区别在于抽象类可以实现方法   而界面不能。

     

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

Abstract methods and classes.

上查看Oracles文档

答案 2 :(得分:1)

根据Jeanne Boyarsky& amp; Scott Selikoff的书,OCA:Oracle®认证助理Java SE 8程序员I学习指南考试1Z0-808。

  

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

答案 3 :(得分:1)

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

答案 4 :(得分:0)

界面中的所有方法都是抽象的。这句话是真的。 接口必须只有抽象方法才能应用多重继承。

答案 5 :(得分:0)

是的,接口只能有抽象方法。

在Java编程语言中,接口是引用类型,类似于类,只能包含常量,方法签名,默认方法,静态方法和嵌套类型。方法主体仅适用于默认方法和静态方法。接口无法实例化-它们只能由类实现或由其他接口扩展。

来源:https://docs.oracle.com/javase/tutorial/java/IandI/createinterface.html

答案 6 :(得分:-2)

界面中的所有方法 摘要,默认情况下,JAVA中的字段为静态公开最终 所有成员都是公开

我们无法使界面的成员私有受保护