在保存时删除接口方法声明中的冗余公共和抽象修饰符

问题描述 投票:1回答:1

publicabstract修饰符对于接口方法声明来说是多余的。

是否有可能通过某种日食偏好删除这些修饰符?

java eclipse
1个回答
1
投票

接口方法的“公共”和“公共最终”是多余的吗?

是。

接口中的所有方法都是隐式公共和抽象的(但不是最终的)。

界面中的所有字段都是隐式公共,静态和最终的。

JLS声明了这一点。它还指出可以省略这些修饰符。

为什么?那么有很多原因:

字段和方法是隐式公共的,因为接口的要点是声明其他类可以看到的...接口。 (如果您想/需要限制访问,可以通过界面本身的访问修饰符完成。)

字段是静态的,因为如果它们不是你将在对象上声明可见的实例字段......这对于封装来说是不好的。

字段是最终的,因为非最终字段将是另一种声明公共静态字段的方式......从OO角度来看这是非常糟糕的。

方法是抽象的,因为允许方法体有效地将接口转换为抽象类。

在接口中使方法抽象和字段静态的另一个原因是,如果它们没有,菱形继承和来自两个不同接口的方法的继承都将是有问题的。

但无论哪种方式,这都是Java的定义方式,所以问题没有实际意义......除非您考虑发明自己的编程语言。

请注意,在Java 8中,您可以使用默认修饰符在接口中声明方法。在Java 9中,您可以在某些情况下声明私有方法。但是使用public关键字仍然是多余的。

我为什么要删除它们?

您不必删除它们。 Java编译器并不关心。您可以删除它们,但不必删除它们,除非您尝试遵循一些坚持这一点的Java样式指南。如果您的代码是一致的,它会使您的代码更具可读性,但您可以通过在任何地方使用冗余修饰符来使其保持一致。

这是不是意味着我想要通过任何类实现add方法,而remove方法只能由同一个包的类实现?

不,这并不意味着。或者至少,它可能意味着对你而言,但这并不意味着对Java编译器,其他Java工具......或其他人阅读和维护你的代码。国际海事组织,对冗余关键字的存在与否赋予任何意义是不明智的。

© www.soinside.com 2019 - 2024. All rights reserved.