接口的所有方法都是抽象的吗?
2022-09-04 19:50:08
我看到它写在大多数地方 -
"All of the methods in an interface are abstract."
但是接口还可能包含和 和 方法体存在默认方法和静态方法。default methods
static methods
那么所有接口的方法都是抽象的吗?
我看到它写在大多数地方 -
"All of the methods in an interface are abstract."
但是接口还可能包含和 和 方法体存在默认方法和静态方法。default methods
static methods
那么所有接口的方法都是抽象的吗?
从Java 8开始,接口还可以包含默认方法和静态方法以及抽象方法。默认方法和静态方法存在方法主体。
Java 8中最大的设计变化之一是接口的概念。在Java 7之前,我们在接口中只能有方法声明。但是从Java 8开始,我们可以在接口中使用默认方法和静态方法。
接口默认方法
为了在接口中创建默认方法,我们需要将“default”关键字与方法签名一起使用。
接口静态方法
静态方法类似于默认方法,只是我们不能在实现类中重写它们。此功能有助于我们在子类中实现不良的情况下避免意外结果。
欲了解更多信息,请查看此
这是正确的
它的所有方法都是抽象的,无论其访问修饰符如何。
@coder的完美解释:
接口就像一个“纯”抽象类。该类及其所有方法都是抽象的。抽象类可以具有已实现的方法,但类本身不能实例化(对于继承和遵循 DRY 很有用)。
对于接口,由于根本没有任何实现,因此它们对于它们的目的很有用:契约。如果实现接口,则必须在接口中实现方法。
因此,不同之处在于抽象类可以具有实现的方法,而接口则不能。
它们是分开的原因是,一个类可以实现多个接口。Java 和 C# 将类限制为单个父类固有的类。有些语言允许您从多个类继承,并且您可以通过“纯”抽象类完成接口的工作。但多重继承有其问题,即可怕的钻石问题
看看Oracles关于抽象方法和类的文档。