接口代码给出了编译时错误

ani*_*rak -1 java

interface I1 {
    int i = 10;
    void add();
    void sub();
    void del();
}
interface I2 {
    void disp();
}
class A implements I1,I2 {
    void add(){...}
    void sub(){...}
    void del(){...}
    void disp(){
        System.out.println(i);
    }
} 
Run Code Online (Sandbox Code Playgroud)

此代码给出了编译时错误.我不知道这段代码有什么问题.

NPE*_*NPE 9

隐含地,I1.add()等人是公开的.因此,在您的课堂上,您还必须公开它们:

public void add(){...}
public void sub(){...}
public void del(){...}
public void disp(){
    System.out.printf(i);
}
Run Code Online (Sandbox Code Playgroud)

否则你会得到

Cannot reduce the visibility of the inherited method from test.I1
Run Code Online (Sandbox Code Playgroud)

此外,调用printf()需要更改为:

System.out.printf("%d", i);
Run Code Online (Sandbox Code Playgroud)

(第一个参数是格式字符串.)

  • 可悲的是,OP无法得到这个,因为他/她从未读过编译器错误消息= \ (2认同)