java接口的字段为何默认是static和final修饰
2022/6/24 1:15:37
本文主要是介绍java接口的字段为何默认是static和final修饰,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
首先你要弄清接口的含义.接口就是提供一种统一的’协议’,而接口中的属性也属于’协议’中的成员.它们是公共的,静态的,最终的常量.相当于全局常量.
抽象类是不’完全’的类,相当于是接口和具体类的一个中间层.即满足接口的抽象,也满足具体的实现.
如果接口可以定义变量,但是接口中的方法又都是抽象的,在接口中无法通过行为来修改属性。有的人会说了,没有关系,可以通过实现接口的对象的行为来修改接口中的属性。这当然没有问题,但是考虑这样的情况。如果接口A中有一个public访问权限的静态变量a。按照java的语义,我们可以不通过实现接口的对象来访问变量a,通过A.a = xxx;就可以改变接口中的变量a的值了。正如抽象类中是可以这样做的,那么实现接口A的所有对象也都会自动拥有这一改变后的a的值了,也就是说一个地方改变了a,所有这些对象中a的值也都跟着变了。这和抽象类有什么区别呢,怎么体现接口更高的抽象级别呢,怎么体现接口提供的统一的协议呢,那还要接口这种抽象来做什么呢?所以接口中不能出现变量,如果有变量,就和接口提供的统一的抽象这种思想是抵触的。所以接口中的属性必然是常量,只能读不能改,这样才能为实现接口的对象提供一个统一的属性。
通俗的讲,你认为是要变化的东西,就放在你自己的实现中,不能放在接口中去,接口只是对一类事物的属性和行为更高层次的抽象。对修改关闭,对扩展(不同的实现implements)开放,接口是对开闭原则的一种体现。
这篇关于java接口的字段为何默认是static和final修饰的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2022-06-30Rust所有权和借用规则示例
- 2022-06-30Spring AOP 环绕通知
- 2022-06-30entware设置镜像源
- 2022-06-30声网自研传输层协议 AUT 的落地实践丨Dev for Dev 专栏
- 2022-06-30第一周
- 2022-06-302022年6月29日面试题(二)
- 2022-06-30postgres小结3
- 2022-06-30代码分析平台 SonarQube 实战
- 2022-06-30ORA-7445 opiaba
- 2022-06-30【证券从业】金融基础知识笔记与思维导图