为什么它给我一个编译错误:无法降低DeclareStuff中继承方法的可见性

use*_*108 2 java visibility

1interface DeclareStuff {
2    public static final int EASY = 3;
3    void doStuff(int t); }
4    public class TestDeclare implements DeclareStuff {
5    public static void main(String [] args) {
6    int x = 5;
7    new TestDeclare().doStuff(++x);
8    }
9    void doStuff(int s) {
10   s += EASY + ++s;
     System.out.println("s " + s);
     }
     }
Run Code Online (Sandbox Code Playgroud)

为什么它给我一个编译错误:无法从第7行的DeclareStuff中减少继承方法的可见性,即void doStuffe(int s).

ska*_*man 12

接口方法是隐含的public.接口方法的实现也必须始终如一public.

编译器错误告诉您,您不能使方法的实现比其超类型"更少"可见.您的类的方法具有默认可见性,这比public界面的方法"更少"可见.

因此,让TestDeclare.doStuff一个public方法,它会工作.