A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

interface  Intf
{
    int x=5;
}
public class InterfaceTest implements Intf{

   
    public static void main(String[] args) {
        new InterfaceTest().printX();
        System.out.println(Intf.x);//接口直接调用属性在子类中使用???

    }
    public void printX(){
        System.out.println(x);
    }
}
此处接口怎么可以直接使用它的属性啊? 大神们来解释解释。。。

评分

参与人数 1技术分 +1 收起 理由
韩军博 + 1

查看全部评分

3 个回复

倒序浏览
接口中定义的变量都隐含修饰符 public static final

所以这里的 int  x=5 ;  可以理解为  public static final int x=5;

所以可以使用  Intf.x

子类实现接口的同时具有接口中的(都是 public )变量  ,所以可以直接使用  x

评分

参与人数 1技术分 +1 收起 理由
韩军博 + 1

查看全部评分

回复 使用道具 举报
因为x在接口中为静态常量,静态常量是存放在内存的数据区,且不能被改变和赋值,只有一份。而且,不需要New出对象,就可以直接由 类名.静态常量(Intf.x),这样直接使用。 因为他"只此一家,别无分号",呵呵。
回复 使用道具 举报
梁世喜 发表于 2012-10-16 10:59
接口中定义的变量都隐含修饰符 public static final

所以这里的 int  x=5 ;  可以理解为  public static  ...

Thanks for replying. Correct Explaination.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马