问题描述
公司考试的试题中有一道判断题:接口不包含成员变量和方法实现。我选择的而是错,因为接口中可以包含成员变量(其实就是接口常量),但是答案是对的,我与出题人交流时无法达成一致,他的理由是:首先,对于变量和常量做一个澄清。常量就是不可以被改变的数值。变量就是可以被改变的数值。如果模糊一点,也可以都叫做变量。 对于接口中定义的变量,编译器会默认它是常量,不可更改。等同于 final static。 其次,对于接口来说,本身是不不可以被实例化,也不能包含任何可变的数据。您给出的例子是类中的变量,而不是接口。 因此,“Java中,接口不包含成员变量和方法实现”我认为是没有问题的。我无法说服他,所以在这里请教大家,究竟他说的对不对? 问题补充:呵呵,先谢谢大家的回帖,其实如果是平时讨论到这里就算了,但是既然是考试那就不一样了。如果本身这道题没有正确答案,那何必考他呢?考了就是看对知识的掌握情况,如果遇到了模棱两可的题,不探其究竟是不是就失去了考试的意义了呢?甚至给了错误的答案,那是不是更是有违初衷呢?
解决方案
这已经是在扣字眼了。或者把Java8的接口默认实现摔他脸上?
解决方案二:
应该有坚持真理的精神,但是扣字眼就没意思了。适口而止吧,工作中也会经常碰到这种情况的,如果是实质性的问题就应该坚持,但是如果只是各人有各人的看法,有时只是从不同的角度来理解,那么就不要强迫别人同意自己的观点,保留意见就是了。
解决方案三:
我觉得主要是看 “成员变量”这个词怎么理解。假如认为 final static 修饰的属性,不是成员变量。那出题人就是对的。假如认为 final static 修饰的属性,也是成员变量。那楼主是对的。~~~~~~~~我倾向于认为 final static 修饰的属性,不是成员变量。我认可出题人的看法
解决方案四:
从答案看,这个问题其实就是想考接口中的变量是static final的,知道了这个知识点就ok,何必要去计较那个概念对?大家要的是知识不是争执,你大度一点就提升了一个层次
解决方案五:
目的是解决问题,而不是去钻牛角尖,过犹不及啊。我们只是搞编程的,而不是做理论研究的,把这些问题留给那些学者教授,我们的目的是保证程序运行正确,怎么运行的更快,设计的更巧妙,其它无关问题,统统靠边站。
解决方案六:
你和他将,死扣理论能解决问题么?