【发布时间】:2018-02-20 16:19:01
【问题描述】:
我了解接口方法隐含为public。 Java Docs Tutorial 说
接口中的所有
abstract、default和static方法都是 隐含public,所以你可以省略public修饰符。
除了抽象、静态和默认,哪些修饰符在 Java 8 中隐式声明。
我认为 abstract 不再隐式声明,因为 Java 8 在接口中引入了 default 方法,但我仍然收到 Intellij IDEA 中的警告。
修饰符“
abstract”对于接口方法来说是多余的。
public interface TestInterface {
abstract int print(); // abstract redundant ?.
int print2(); //legal.but public or public abstract ?.
}
【问题讨论】:
-
我已经通过stackoverflow.com/questions/20045759/… 仍然无法澄清我的疑问。
-
它没有方法体,因此它是
abstract。它不能是隐式默认的,你不提供方法体。为什么会让人困惑? -
这不意味着
int print2();被“隐式”声明为抽象吗? -
确实如此。这就是为什么修饰符
abstract是多余的。 -
没有实现的方法是抽象的,不管你声明它是不是抽象的。如果您将方法声明为默认方法,则确实需要提供一个实现,实际上是一个 default 实现。此外,接口中的所有内容都是公共的(Java 9 中引入的私有方法除外)。
标签: java intellij-idea java-8