繁体   English   中英

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

[英]Are all methods of interface abstract?

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

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

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

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

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

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

接口默认方法

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

接口静态方法

静态方法类似于默认方法,只是我们不能在实现类中覆盖它们。 如果子类中的实现不佳,此功能可帮助我们避免出现不良结果。

有关更多信息,请查看

那是对的

它的所有方法都是抽象的,与其访问修饰符无关。

@coder的完美解释:

接口就像一个“纯”抽象类。 该类及其所有方法都是抽象的。 抽象类可以有实现的方法,但类本身不能被实例化(对继承和遵循 DRY 很有用)。

对于接口,由于根本没有任何实现,因此它们对它们的目的很有用:契约。 如果实现接口,则必须实现接口中的方法。

所以区别在于抽象类可以有实现的方法,而接口不能。

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

查看有关抽象方法和类的 Oracles 文档。

根据 Jeanne Boyarsky 和 Scott Selikoff 的书 OCA:Oracle® Certified Associate Java SE 8 Programmer I Study Guide Exam 1Z0-808,这是错误的。

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

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

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

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

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

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

接口中的所有方法都是抽象的,默认情况下 JAVA 中的字段是staticpublicfinal并且所有成员都是公共

而且我们不能将接口的成员设为privateprotected

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM