昨天的面试题,请指教

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

2
banq
2006-10-23 15:26
我只知道这是Java规定,另外接口是行为抽象,不是属性抽象。

taoj555
2006-11-16 16:10
接口不能被实例化,所以其成员变量必须为不可修改的,就是常量。

javagood
2007-01-25 17:32
不是太明白

peterkong
2007-01-31 10:58
因为接口定义处方法以外都
final static的所以必须为常量

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

这个是正解

taia
2007-01-31 18:46
楼上的
"接口不能被实例化" 与 "其成员变量必须为不可修改的" 有必然的联系吗?

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


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

taia
2007-01-31 18:56
续上,干脆把代码也贴出来


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来声明为常量

fogu7
2007-02-01 08:47
还真没想过

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

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

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

dhxyu
2007-02-02 13:37
来看看 哈

journeydj
2007-02-02 20:56
学习一下 J道第一贴(刚注册的 :))

jdonfans
2007-02-03 21:05
什么公司啊,无不无聊了一点。管它为什么,只要知道接口里面只能声明常量不就得了。

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

这样还说得过去。

YRHYRH
2007-02-05 03:39
leoyu 正解呀。。呵呵。。

猜你喜欢
4Go 1 2 3 4 下一页