论坛首页 Java企业应用论坛

Java接口中的成员变量为什么必须是public static final?

浏览 10809 次
精华帖 (0) :: 良好帖 (4) :: 新手帖 (1) :: 隐藏帖 (12)
作者 正文
   发表时间:2011-04-14  
dwbin 写道
楼主想多了。static是为了开始的时候初始化,final是为了编译期间的优化,怎么也没有觉得太高深的东西。

你说的这是语法层面的,我是从接口为什么要这样设计来分析的,仅仅是大家讨论交流而已。
0 请登录后投票
   发表时间:2011-04-14  
cjh_ubuntu 写道
我不知道有人投隐的原因。

我也纳闷了,高手可以略过,为啥非要隐藏呢。
0 请登录后投票
   发表时间:2011-04-14  
引用

首先接口是一种高度抽象的"模版",,而接口中的属性也就是’模版’的成员,就应当是所有实现"模版"的实现类的共有特性,所以它是public static的 ,是所有实现类共有的 .假如可以是非static的话,因一个类可以继承多个接口,出现重名的变量,如何区分呢?

对于楼主的这点,我不能认同,接口中的属性是static的,是因为接口不能实例化,所以如果要引用接口中的属性,只能通过接口去引用,和引用类中的静态变量的方式一样,例如:BigDecimal.ZERO
0 请登录后投票
   发表时间:2011-04-14  
补充一下,并不会出现重名变量无法区分的问题
0 请登录后投票
   发表时间:2011-04-14  
kuaileqingfeng 写道
引用

首先接口是一种高度抽象的"模版",,而接口中的属性也就是’模版’的成员,就应当是所有实现"模版"的实现类的共有特性,所以它是public static的 ,是所有实现类共有的 .假如可以是非static的话,因一个类可以继承多个接口,出现重名的变量,如何区分呢?

对于楼主的这点,我不能认同,接口中的属性是static的,是因为接口不能实例化,所以如果要引用接口中的属性,只能通过接口去引用,和引用类中的静态变量的方式一样,例如:BigDecimal.ZERO

我说的是:假如可以是非static的话,怎么区分? 不知道你是否能理解我的意思 呵呵,共同讨论
0 请登录后投票
   发表时间:2011-04-14  
不内涵。
搞java里面相当一部分人都是思维懒惰的机器人
只知道how、 而不想知道why

什么事情有果就有因、 只知道果的人永远都是傀儡

java规范不是天朝制度, 不是不能剖析里面的原理

LZ这篇帖子很简约而不简单
只不过太多人侧重于炫耀知识而不是探索知识,所以也出现那么多的人投隐藏票了、或许他们认为不投隐藏或者新手对不起“他们丰富的开发经验和熟练的java使用技巧”
1 请登录后投票
   发表时间:2011-04-14  
s929498110 写道
不内涵。
搞java里面相当一部分人都是思维懒惰的机器人
只知道how、 而不想知道why

什么事情有果就有因、 只知道果的人永远都是傀儡

java规范不是天朝制度, 不是不能剖析里面的原理

LZ这篇帖子很简约而不简单
只不过太多人侧重于炫耀知识而不是探索知识,所以也出现那么多的人投隐藏票了、或许他们认为不投隐藏或者新手对不起“他们丰富的开发经验和熟练的java使用技巧”


就是:知其然,但不知其所以然
0 请登录后投票
   发表时间:2011-04-14  
接口==协议
0 请登录后投票
   发表时间:2011-04-15  
s929498110 写道
不内涵。
搞java里面相当一部分人都是思维懒惰的机器人
只知道how、 而不想知道why

什么事情有果就有因、 只知道果的人永远都是傀儡

java规范不是天朝制度, 不是不能剖析里面的原理

LZ这篇帖子很简约而不简单
只不过太多人侧重于炫耀知识而不是探索知识,所以也出现那么多的人投隐藏票了、或许他们认为不投隐藏或者新手对不起“他们丰富的开发经验和熟练的java使用技巧”

引用兄台的话,这帖子确实简约而不简单。这样的帖子最有意思。
既然事情是这个道理,就要知道为什么是这个道理,做事要知因果。
投隐的人除非你确实是超级大牛,在那里装清高,要么就是一群半桶水装深沉。
0 请登录后投票
   发表时间:2012-02-16  
赞一个,看来对java理解有深度哦
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics