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