精华帖 (0) :: 良好帖 (4) :: 新手帖 (1) :: 隐藏帖 (12)
|
|
---|---|
作者 | 正文 |
发表时间:2011-04-12
最后修改:2011-04-12
在interface里面的变量默认都是public static final 的。所以可以直接省略修饰符: String param="ssm";//变量需要初始化
为什么接口要规定成员变量必须是public static final的呢?
答: 首先接口是一种高度抽象的"模版",,而接口中的属性也就是’模版’的成员,就应当是所有实现"模版"的实现类的共有特性,所以它是public static的 ,是所有实现类共有的 .假如可以是非static的话,因一个类可以继承多个接口,出现重名的变量,如何区分呢?
其次,接口中如果可能定义非final的变量的话,而方法又都是abstract的,这就自相矛盾了,有可变成员变量但对应的方法却无法操作这些变量,虽然可以直接修改这些静态成员变量的值,但所有实现类对应的值都被修改了,这跟抽象类有何区别? 又接口是一种更高层面的抽象,是一种规范、功能定义的声明,所有可变的东西都应该归属到实现类中,这样接口才能起到标准化、规范化的作用。所以接口中的属性必然是final的。
最后,接口只是对事物的属性和行为更高层次的抽象 。对修改关闭,对扩展(不同的实现implements)开放,接口是对开闭原则(Open-Closed Principle )的一种体现。
不知道大家能否认同?请畅所欲言!
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-04-12
你说的都对
接口可以理解成一个高度抽象化的约定,凡是实现该接口的都要遵循这个约定,如果约定中的内容随便改,那怎么通信呢...... |
|
返回顶楼 | |
发表时间:2011-04-13
看接口的定义就知道了
接口本来就是实现封装的一种手段,它的目的就是将类的使用说明与类的实现相分离 如果接口中出现实例变量,那接口就变驴子了 |
|
返回顶楼 | |
发表时间:2011-04-13
我不知道有人投隐的原因。
|
|
返回顶楼 | |
发表时间:2011-04-13
要怎么样才能投贴呢??
|
|
返回顶楼 | |
发表时间:2011-04-13
接口就像标准,不开放定义这破玩意有啥用处.........................
|
|
返回顶楼 | |
发表时间:2011-04-13
cjh_ubuntu 写道 我不知道有人投隐的原因。
说句不好听的话,很多投隐的人其实自己本身也就是个半罐水,技术讨论本来就不应该分层次,恰恰我认为现在很多人最缺的就是扎实的基础。 |
|
返回顶楼 | |
发表时间:2011-04-13
接口是一种抽象化,起到标准化、规范化的作用。赞同
|
|
返回顶楼 | |
发表时间:2011-04-14
这是java的规范,没为什么,不需要为什么。。王八的屁股,龟腚~
|
|
返回顶楼 | |
发表时间:2011-04-14
楼主想多了。static是为了开始的时候初始化,final是为了编译期间的优化,怎么也没有觉得太高深的东西。
|
|
返回顶楼 | |