实现一个不起作用的接口

Geo*_*iuc 0 java

public class TestImpl {
    public static void main(String[] args) {
        HelloImpl h1 = new HelloImpl(), h2 = h1;
        h1.message = "holla";
        System.out.println(h2.sayHello());
    }
}

interface Hello {
    String sayHello();
}

class HelloImpl implements Hello {
    static String message = "Hello";

    String sayHello() {
        return message;
    }
}
Run Code Online (Sandbox Code Playgroud)

我得"试图分配较弱的特权".

Bor*_*der 6

默认情况下,interface所有成员都是public.

您无法实现(或覆盖)方法并分配较弱的权限,因为这不允许多态.

你必须做sayHello() public.

class HelloImpl implements Hello {
    private static final String message = "Hello";

    public String sayHello() {
        return message;
    }
}
Run Code Online (Sandbox Code Playgroud)

此外,内部常量应该是 private final