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

我想对于每个Java程序员来说,接口都不陌生,接口中的方法也经常使用。而接口中的成员变量,就显得用得少一点,
而对于成员变量为什么必须声明为public static final,可能就更不清楚了,而且我觉得大多数不清楚为什么要用
static 和 final。下面我们就来解释一下。

一、为什么要用final?

首先,我们应该明白一个问题。接口,实际上比抽象类更加抽象,它是最高层次的抽象。接口中的所有方法都是抽象方法,不会有任何实现方面的代码,而它
的具体实现是要靠实现这个接口的具体类来具体实现的。而且,这个接口中的方法是不可更改的。同样的,接口中的变量也是不可更改的。所以,要声明为
final。

接口是一种协议,协议是所有实现接口的类都必须遵守的。如果变量不是final,那么每个实现接口的类就可以更改这个变量的值,也就违反了OCP原则。

二、为什么要用static?

至于这个问题,是和Java
言的本身机制有关。我们知道Java不支持多继承,但是一个类可是现实多个接口。我们假设有两个接口A和B,而类C实现了接口A和B。假设,此时,A和B
中都有一个变量N,如果N不是static类型的,那么在C中该如何区分N到底是A的还是B的呢?而,如果是static类型的,我们可以通过A.N和
B.N来区别调用A或者B中的成员变量N。

出处来自http://blog.csdn.net/qiumengchen12/article/details/44852023#

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 32,311评论 18 399
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,810评论 19 139
  • 更迭岁月,纷扰考试沓来,期年之后,回溯峥嵘往昔岁月。 忆往昔飞逝时光,晨曦初露,万家灯明,莘莘学子忙趁早,琅琅书声...
    猪小三阅读 2,463评论 0 6
  • 需要时,已经晚了。在遇到事故前需要了解的紧急措施。 車の故障や事故は、前触れなく急に起こることが多いものです。どう...
    邓腼腆阅读 1,634评论 0 0
  • 不知道是不是随着年龄渐长的原因,愈发觉得匮乏的知识面如流感一般弥漫于生活中的每个角落缝隙中!指尖敲打文字时常感到“...
    三柒美里阅读 3,056评论 0 0

友情链接更多精彩内容