请教大家关于接口内是否可以包含成员变量的问题!!

sldarkangel 2013-08-16 10:19:46
公司考试的试题中有一道判断题:
接口不包含成员变量和方法实现。
我选择的而是错,因为接口中可以包含成员变量(其实就是接口常量),但是答案是对的,我与出题人交流时无法达成一致,他的理由是:


首先,对于变量和常量做一个澄清。常量就是不可以被改变的数值。变量就是可以被改变的数值。如果模糊一点,也可以都叫做变量。

对于接口中定义的变量,编译器会默认它是常量,不可更改。等同于 final static。

其次,对于接口来说,本身是不不可以被实例化,也不能包含任何可变的数据。您给出的例子是类中的变量,而不是接口。


因此,“Java中,接口不包含成员变量和方法实现”我认为是没有问题的。


我无法说服他,所以在这里请教大家,究竟他说的对不对?
...全文
935 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
sldarkangel 2013-08-16
  • 打赏
  • 举报
回复
引用 1 楼 love_jobs 的回复:
接口中定义常量或者变量 是没有什么意思的 再说了 接口本来就没办法实例化!要常量干吗使!
其实实际编程过程中还是有意义的,比如定义一些全局的常量来用,如果把一些不常变的东西放到文件或数据库中,使用时比较麻烦,还要做读取操作,放到接口内的常量中,就很方便了。
sldarkangel 2013-08-16
  • 打赏
  • 举报
回复
[quote=引用 1 楼 love_jobs 的回复:] 接口中定义常量或者变量 是没有什么意思的 再说了 接口本来就没办法实例化!要常量干吗使![/quote 其实实际编程过程中还是有意义的,比如定义一些全局的常量来用,如果把一些不常变的东西放到文件或数据库中,使用时比较麻烦,还要做读取操作,放到接口内的常量中,就很方便了。
疯狂熊猫人 2013-08-16
  • 打赏
  • 举报
回复
1、从语法上讲,接口包含成员变量,例如 public int a=6;这是没有任何错误的。 2、java对接口编译的时候会将变量当做常量处理。 所以啊,楼主,你是对的,我支持你。语法是语法,实际是实际,不能一概而论吧。如果都按照实际的话,那么为什么java对接口的处理,在里面可以使用1中的语法呢?为什么不直接定死为只能是public static之类的呢?其中的道理本人太菜,理解不了。
末日哥 2013-08-16
  • 打赏
  • 举报
回复
这是在玩文字游戏啊?。。知道那么回事就行了、 接口中的常量算是它的成员。。至于叫不叫成员变量不清楚。。 反正我是不这么叫,在类里面也是,有getter,setter方法的成员叫属性,其它叫字段。。
bany55 2013-08-16
  • 打赏
  • 举报
回复
本来就是对的啊....
finxeng 2013-08-16
  • 打赏
  • 举报
回复
接口中定义常量或者变量 是没有什么意思的 再说了 接口本来就没办法实例化!要常量干吗使!
Landor2004 2013-08-16
  • 打赏
  • 举报
回复
看情况而定,比如有个实体(或者领域模型)叫Event,有一个Service接口,叫EventService Event里有个属性 evtStatus 我完全可以把evtStatus的枚举值放在EventService里,比如:
public interface EventService extends Xxx{
	
	public enum EvtStatus {
		INSERT("I"), UPDATE("U"), DELETE("D");
		...
	}
	
	其他方法...
}
finxeng 2013-08-16
  • 打赏
  • 举报
回复
引用 6 楼 sldarkangel 的回复:
[quote=引用 1 楼 love_jobs 的回复:] 接口中定义常量或者变量 是没有什么意思的 再说了 接口本来就没办法实例化!要常量干吗使!
其实实际编程过程中还是有意义的,比如定义一些全局的常量来用,如果把一些不常变的东西放到文件或数据库中,使用时比较麻烦,还要做读取操作,放到接口内的常量中,就很方便了。 [/quote] 一下是我所用的常量类:

package com.skss.podms.util;

import java.util.Random;

/**
 * @ClassName SysConstant
 * @Description: 系统常量定义类
 * @author chenzhiyong
 * @date 2013-5-26
 */
public class SysConstant {
	/**
	 * 是否叶子节点:是
	 */
	public static final String IS_LEAF = "1";

	/**
	 * 是否叶子节点:否
	 */
	public static final String IS_NOT_LEAF = "0";

	/**
	 * 是否:是
	 */
	public static final String IS = "1";

	/**
	 * 是否:否
	 */
	public static final String NO = "0";

	/**
	 * 字典类别:操作状态
	 */
	public static final String TYPE_OPERATE_STATUS = "TYPE_OPERATE_STATUS";

	/**
	 * 字典类别:有效状态
	 */
	public static final String TYPE_IS_VALID = "TYPE_IS_VALID";

	/**
	 * 字典类别:扶贫标准
	 */
		
}

51,397

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧