java—接口“不能降低继承方法的可见性”的含义

vzgqcmou  于 2021-06-30  发布在  Java
关注(0)|答案(2)|浏览(453)

我有两个文件:

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 .
有人能解释一下这对我意味着什么吗?

2izufjch

2izufjch1#

在接口实现的类中公开methode,因为在接口中,默认情况下每个方法都是公开的和抽象的。

c9qzyr3d

c9qzyr3d2#

在java接口中,每个方法都是默认的 public :
接口主体中的每个方法声明都是隐式抽象的,因此其主体总是用分号表示,而不是块。
接口体中的每个方法声明都是隐式公共的。[..]
在实现类中,不允许通过不指定访问修饰符来降低可见性:

void print(){..}

您指定的是访问级别默认值,其可见性低于 public .

相关问题