社区
Java
帖子详情
接口中的成员变量为什么要是static的?
BankingRegulatorLLM
2010-03-14 05:30:18
一直以来,就只是知道 java中的接口定义的成员变量必须是public static final.
由于接口就是标准嘛!对于public final肯定是好理解的,可是对于为什么要是static 的
就不得而知了。提问一下,希望得到较深入地回答 。
...全文
413
10
打赏
收藏
接口中的成员变量为什么要是static的?
一直以来,就只是知道 java中的接口定义的成员变量必须是public static final. 由于接口就是标准嘛!对于public final肯定是好理解的,可是对于为什么要是static 的 就不得而知了。提问一下,希望得到较深入地回答 。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
mixcy
2010-12-28
打赏
举报
回复
我想7F回答的是为什么是final
至于要加static的原因 个人是这么理解 应该是解决了用接口来实现多继承中存在的问题
如果一个类实现了两个接口A,B. 而A和B中都有相同的属性名...那如何区分
所以有必要加上static
BearKin
2010-03-16
打赏
举报
回复
接口中不允许方法的实现,而抽象类是允许方法实现的及定义变量的,因此我们可以看出接口是比抽象类更高层次的抽象。如果接口可以定义变量,但是接口中的方法又都是抽象的,在接口中无法通过行为(例如set()方法)来修改属性。那么有些人就会提出可以通过实现接口的类的实例来修改接口的属性。那好,如果接口中有一变量c,我们通过实现它的A类对象改变了c的值,那么实现接口的B类,C类中的c变量都要跟着改变,可想而知这样就会造成混乱,很多想要实现接口的类就不知道接口里现在c变量到底是什么值,因为接口是在变的,它不再是那种高层的抽象,而是带了可变的成分。
所谓的抽象就是把一些不可变的东西放在一起,而可变的东西往往放在实现里面。
所以我们深思接口的本意所在,实际上它是对一类事物属性和行为的高层次抽象,它体现的是OCP
(对修改关闭,对扩展开放)
原则,这也是我们软件开发中一直所追求。
http://www.javaeye.com/topic/220134
JavaAlpha
2010-03-16
打赏
举报
回复
[Quote=引用 7 楼 bearkin 的回复:]
接口中不允许方法的实现,而抽象类是允许方法实现的及定义变量的,因此我们可以看出接口是比抽象类更高层次的抽象。如果接口可以定义变量,但是接口中的方法又都是抽象的,在接口中无法通过行为(例如set()方法)来修改属性。那么有些人就会提出可以通过实现接口的类的实例来修改接口的属性。那好,如果接口中有一变量c,我们通过实现它的A类对象改变了c的值,那么实现接口的B类,C类中的c变量都要跟着改变,可想而知这……
[/Quote]
解释的太详细,太明确了。
luweiyuan01
2010-03-16
打赏
举报
回复
接口中的属性默认是public final static
zhudongdong007
2010-03-15
打赏
举报
回复
接口里面的好像都是静态常量吧!
我也不太明白,
加油,楼主。
BankingRegulatorLLM
2010-03-15
打赏
举报
回复
[Quote=引用 2 楼 jqc200902 的回复:]
朋友,这个我告诉你,接口只是一些规范、功能的定义声明,接口中只能有类常量,我们之前学过如何去声明常量,就是使用final修饰符,常量通常都会和static这个修饰符一起使用,以节约内存的空间,在接口中声明的变量,会自动成为类常量,所以不需要自行加上static和final的修饰符。
[/Quote]
还是不明白变量为什么要申明成static的,难道仅仅是节省内存空间吗 ???
qjcslgnhwayagain
2010-03-14
打赏
举报
回复
变量加上static 应该是说明这个量是该接口所以被继承的类所共有的吧
michaellufhl
2010-03-14
打赏
举报
回复
Interface里面有non-static的东西不就是abstract class了么:)
jqc200902
2010-03-14
打赏
举报
回复
朋友,这个我告诉你,接口只是一些规范、功能的定义声明,
接口中只能有类常量
,我们之前学过如何去声明常量,就是使用final修饰符,常量通常都会和static这个修饰符一起使用,以节约内存的空间,在接口中声明的变量,会自动成为类常量,所以不需要自行加上static和final的修饰符。
bibihenmuc
2010-03-14
打赏
举报
回复
个人认为,标准的含义不仅是不可变,而且还有通用的意思!既然接口的设计是为了标准化,那么他的成员变量也就应该是一个标准的变量,final体现了不可变的意思,而static体现了通用的意思,以上纯属个人见解,嘿嘿
2020新课-微信小程序
接口
开发实战、坑的解决
讲解微信小程序和服务器端数据交互、服务器端
接口
的开发。【课程说明】00-微信小程序
接口
开发课程说明01-搭建课程学习的小程序【
变量
和
接口
】02-基础用法-
变量
的定义和使用03-
接口
用法-服务端环境的介绍04-
接口
用法-服务器端数据调用和常见坑讲解(HTML页面
接口
数据)05-
接口
用法-PHP
接口
的开发【对象和
接口
】06-基础用法-对象的定义和使用07-
接口
用法-HTML页面
接口
写法和常见坑讲解08-
接口
用法-PHP
接口
的开发(从数据库读取数据)【普通数组和
接口
】09-基础用法-数组的定义和使用10-
接口
用法-HTML页面
接口
写法和常见坑讲解11-
接口
用发-PHP
接口
的开发(从数据库读取数据)【(单字段)对象数组和
接口
】12-基础用法-对象数组的定义和使用13-
接口
用法-HTML页面
接口
写法和常见坑讲解14-
接口
用发-PHP
接口
的开发(从数据库读取数据)【(多字段)对象数组和
接口
】15-基础用法-对象数组的定义和使用16-
接口
用法-PHP
接口
的开发(从数据库读取数据)【传数据到服务器和
接口
开发】17-准备工作和
接口
修改、测试18-
接口
开发-实现提交数据到服务器(且入数据库)
Java
接口
中
的
成员
变量
为什么必须是
static
?
接口
的含义
接口
就是提供一种统一的协议, 而
接口
中
的属性也属于协议
中
的
成员
。它们是公共的,静态的,最终的常量。相当于全局常量。 在interface里面的
变量
都是public
static
final 的。 public
static
final int i=10; 等 价于 int i=10;(可以省略掉一部分) //注意在声明的时候要给
变量
赋予初值
接口
是一套标准,统一的入口。 抽象类是不’完全’的类,相当于是
接口
和具体类的一个
中
间层.即满足
接口
的抽象,也满足具体的实现. ...
java,
接口
的
变量
为啥要是public
static
final?
jdk1.8
中
,
接口
中
的
变量
默认是public
static
final
接口
中
的方法默认是 public abstract,除非是
static
方法或者默认方法
接口
中
的
变量
默认是public
static
final? public:
接口
可以被不同包的不同类实现,是公有的,
static
:一个类继承多个
接口
时,即使存在同名
变量
也不会混淆。如果每个
接口
都含有一个名为a的
成员
变量
,那么在该类
中
可...
为什么
接口
中
的
成员
变量
非得是public
static
final?
为什么
接口
中
的
成员
变量
非得是public
static
final的呢? 首先明白一个原理,就是
接口
的存在意义。
接口
就是为了实现多继承的抽象类,是一种高度抽象的模板、标准或者说协议。规定了什么东西该是这样,如果你继承了我这
接口
,就必须这样。比如USB
接口
,就是小方口,两根电源线和两根数据线,不能多不能少。 (1)public 既然是公共的模板或者协议,那么如果定义成p
Java
接口
中
的
成员
变量
为什么必须是public
static
final?
1.
接口
必须要具体类实现才有意义,所以必须是public。 2.
接口
中
的属性对所有实现类只有一份,所以是
static
。 3.要使实现类为了向上转型成功,所以必须是final的。 所以可以直接省略修饰符:String param="ssm";//
变量
需要初始化??为什么
接口
要规定
成员
变量
必须是public
static
final的呢???答:首先
接口
是一种高度抽象的"模版",,而
接口
中
的属性也
Java
50,549
社区成员
85,621
社区内容
发帖
与我相关
我的任务
Java
Java相关技术讨论
复制链接
扫一扫
分享
社区描述
Java相关技术讨论
java
spring boot
spring cloud
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章