使用接口“无法降低inheritance方法的可见性”的含义
我有两个文件:
public interface PrintService { void print(PrintDetails details); class PrintDetails { private String printTemplate; } public interface Task { String ACTION = "print"; } }
和
public class A implements PrintService { void print(PrintDetails details) { System.out.println("printing: " + details); } String action = PrintService.Task.ACTION; }
我认为代码看起来没问题,但我在第二个文件中收到行void print(PrintDetails details) {
表示:
无法降低
PrintService
inheritance方法的可见性。
有人能解释这对我意味着什么吗?
在Java界面中,每个方法默认为public
:
接口主体中的每个方法声明都是隐式抽象的,因此它的主体始终用分号表示,而不是块。
接口主体中的每个方法声明都是隐式公开的。 [..]
在实现类中,不允许降低可见性,也不允许指定访问修饰符:
void print(){..}
您指定的访问级别默认值 ,其可见性低于public
。
在接口实现的类中使methode公开,因为在接口默认情况下每个方法都是public和abstract。