昨天的面试题,请指教

昨天去面试,问到了一个接口问题,为什么接口中定义的变量必须为常量?请指点!

我只知道这是Java规定,另外接口是行为抽象,不是属性抽象。

接口不能被实例化,所以其成员变量必须为不可修改的,就是常量。

不是太明白

因为接口定义处方法以外都
final static的所以必须为常量

三楼的:接口不能被实例化,所以其成员变量必须为不可修改的,就是常量。

这个是正解

楼上的
"接口不能被实例化" 与 "其成员变量必须为不可修改的" 有必然的联系吗?

抽象类也不能实例化,但它就可以定义变量


另外,接口是可以定义变量的,偶刚才试过了,可以通过编译

续上,干脆把代码也贴出来


public abstract class Word{

public int i;

}

class Test extends Word
{
public static void main(String[] args)
{
Test test=new Test();
System.out.println(test.i);
test.i=2;
System.out.println(test.i);
}
}


------------
PS:把WORD抽象类标识也可改为接口标识,但里面的变量i必须赋初值,可以不用fanil来声明为常量

还真没想过

因为接口不包含任何实现细节,所以他们不能定义普通的字段——这样的定义会把实现策略强加给选择实现该接口的类。

首先你要弄清接口的含义.接口就是提供一种统一的'协议',而接口中的属性也属于'协议'中的成员.它们是公共的,静态的,最终的常量.相当于全局常量.
抽象类是不'完全'的类,相当于是接口和具体类的一个中间层.即满足接口的抽象,也满足具体的实现.

[该贴被leoyu于2007年02月02日 09:40修改过]

来看看 哈

学习一下 J道第一贴(刚注册的 :))

什么公司啊,无不无聊了一点。管它为什么,只要知道接口里面只能声明常量不就得了。

他如果问: 接口里面能定义变量吗?

这样还说得过去。

leoyu 正解呀。。呵呵。。