接口中的数据隐藏 java

Data hiding in interface java

    interface My{
        int x = 10;
    }
    class Temp implements My{
        int x = 20;
        public static void main(String[] s){
              System.out.println(new Temp().x);
        }
    }

这会将结果打印为 20。有什么方法可以访问属于 class 中的接口的 x?

您需要对接口类型进行显式转换:

System.out.println(((My)new Temp()).x);

但是请注意,x 未绑定到 My 的任何实例。接口字段是隐式的 staticfinal(更多常量),这意味着上面可以使用:

System.out.println(My.x);

您可以随时使用它。

interface My {

    int x = 10;
}

class Temp implements My {

    int x = 20;

    public static void main(String[] s) {
        System.out.println(new Temp().x);        // 20
        System.out.println(My.x);                // 10
    }
}

Interface 的字段总是 static.