JAVA中接口(interface)中的成员变量为什么public static final 的?

iDuanyingjie 2012-06-04 09:48:17
如题:

在百度贴吧里面看到一个答案里面说的是:

接口中的数据对所有实现类只有一份,所以是static

不是很理解这句话!为什么接口中的数据对所有实现类只有一份?

谢谢!
...全文
628 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
sai123q 2012-06-06
  • 打赏
  • 举报
回复
接口就是框架
比如造房子 接口就是设计图
设计图里有必要 放一块砖头吗?
weiwei_good_java 2012-06-06
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
引用 1 楼 的回复:

static的话实现这个接口的类,就可以直接使用这个数据。
final 关键字:
1 final数据:对于基本类型前加以final修饰,表示被修饰的变量为常数,不可以修改。一个既是static又是final的字段表示只占据一段不能改变的存储空间。
final用于对象应用时,final使应用恒定不变。一旦引用被初始化指向一个对象,就无法再把它改为指向另一个对象。
……
[/Quote]

你说得有道理的
beiouwolf 2012-06-05
  • 打赏
  • 举报
回复
从编译上来说,interface是抽象的,不能被实例化,所以你不能往里面写一个实例对象,而static对象作用于类定义,static对象的初始化在类被声明的时候,所以interface可以包含一个static属性
从接口定义来看,interface是用于对象的方法规范的,所以也不存在实例化变化

不知道你不明白的到底是接口还是说static对象
建立翻翻书,好好看看接口和static的描写
xlhb 2012-06-05
  • 打赏
  • 举报
回复
static的话实现这个接口的类,就可以直接使用这个数据。
final 关键字:
1 final数据:对于基本类型前加以final修饰,表示被修饰的变量为常数,不可以修改。一个既是static又是final的字段表示只占据一段不能改变的存储空间。
final用于对象应用时,final使应用恒定不变。一旦引用被初始化指向一个对象,就无法再把它改为指向另一个对象。
wscxy31415926 2012-06-05
  • 打赏
  • 举报
回复
我感觉可能是接口不能被实例化,在内存中存储需要存储在内存静态区。
iDuanyingjie 2012-06-05
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

从编译上来说,interface是抽象的,不能被实例化,所以你不能往里面写一个实例对象,而static对象作用于类定义,static对象的初始化在类被声明的时候,所以interface可以包含一个static属性
从接口定义来看,interface是用于对象的方法规范的,所以也不存在实例化变化

不知道你不明白的到底是接口还是说static对象
建立翻翻书,好好看看接口和static的描……
[/Quote]
感觉你说的和3楼差不多一个意思,就是接口不能被实例化,所以接口里面的成员属性不是静态的就没有意义了!
sffx123 2012-06-05
  • 打赏
  • 举报
回复
从接口的作用来看,接口就是一组规范,既然是规范,里面的内容(数据)必须是确定的,不能每个实现的类都不同,那么接口的意义就没有了。
Study 2012-06-05
  • 打赏
  • 举报
回复
楼上正解
iDuanyingjie 2012-06-04
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

我是这么理解的,interface是抽象的,不能被实例化,他的成员变量属于类,所以用static声明。如果不用static声明,则表示成员变量属于对象。ok,回到原点,interface不能创建对象,那定义对象成员有意义吗?我也是个菜鸟,如有理解错的地方,请高人指点。
[/Quote]
接口严格意义上来讲,他不是一个类,你可以把他看成一个功能的扩展,第二点讲的不错!
ffa15 2012-06-04
  • 打赏
  • 举报
回复
我是这么理解的,interface是抽象的,不能被实例化,他的成员变量属于类,所以用static声明。如果不用static声明,则表示成员变量属于对象。ok,回到原点,interface不能创建对象,那定义对象成员有意义吗?我也是个菜鸟,如有理解错的地方,请高人指点。
iDuanyingjie 2012-06-04
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

static的话实现这个接口的类,就可以直接使用这个数据。
final 关键字:
1 final数据:对于基本类型前加以final修饰,表示被修饰的变量为常数,不可以修改。一个既是static又是final的字段表示只占据一段不能改变的存储空间。
final用于对象应用时,final使应用恒定不变。一旦引用被初始化指向一个对象,就无法再把它改为指向另一个对象。
[/Quote]
不是,这还是没解释为什么啊!
未来纪元 2012-06-04
  • 打赏
  • 举报
回复
static的话实现这个接口的类,就可以直接使用这个数据。
final 关键字:
1 final数据:对于基本类型前加以final修饰,表示被修饰的变量为常数,不可以修改。一个既是static又是final的字段表示只占据一段不能改变的存储空间。
final用于对象应用时,final使应用恒定不变。一旦引用被初始化指向一个对象,就无法再把它改为指向另一个对象。

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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