首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java相关 >

关于接口内是否可以包含成员变量的有关问题!

2013-08-24 
请教大家关于接口内是否可以包含成员变量的问题!!公司考试的试题中有一道判断题:接口不包含成员变量和方法

请教大家关于接口内是否可以包含成员变量的问题!!
公司考试的试题中有一道判断题:
接口不包含成员变量和方法实现。
我选择的而是错,因为接口中可以包含成员变量(其实就是接口常量),但是答案是对的,我与出题人交流时无法达成一致,他的理由是:


首先,对于变量和常量做一个澄清。常量就是不可以被改变的数值。变量就是可以被改变的数值。如果模糊一点,也可以都叫做变量。
 
对于接口中定义的变量,编译器会默认它是常量,不可更改。等同于 final static。
 
其次,对于接口来说,本身是不不可以被实例化,也不能包含任何可变的数据。您给出的例子是类中的变量,而不是接口。
 
 
因此,“Java中,接口不包含成员变量和方法实现”我认为是没有问题的。

我无法说服他,所以在这里请教大家,究竟他说的对不对? java j2ee j2se javaEE
[解决办法]
1、从语法上讲,接口包含成员变量,例如 public int a=6;这是没有任何错误的。
2、java对接口编译的时候会将变量当做常量处理。
所以啊,楼主,你是对的,我支持你。语法是语法,实际是实际,不能一概而论吧。如果都按照实际的话,那么为什么java对接口的处理,在里面可以使用1中的语法呢?为什么不直接定死为只能是public static之类的呢?其中的道理本人太菜,理解不了。
[解决办法]
看情况而定,比如有个实体(或者领域模型)叫Event,有一个Service接口,叫EventService
Event里有个属性 evtStatus

我完全可以把evtStatus的枚举值放在EventService里,比如:

public interface EventService extends Xxx{

public enum EvtStatus {
INSERT("I"), UPDATE("U"), DELETE("D");
...
}

其他方法...
}

热点排行