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。
接口只是对事物的属性和行为更高层次的抽象 。对修改关闭,对扩展(不同的实现implements)开放,接口是对开闭原则(Open-Closed Principle )的一种体现。
interface X {
public static final String name="123";
}
interface Y {
public static final String name="456";
}
public class Z implements X,Y {
public static void main (String [] args){
System.out.println(X.name);
System.out.println(Y.name);
}
}
转载于:https://www.cnblogs.com/CrisZjie180228/p/8716989.html
Java接口中的成员变量为什么必须声明为public static final?相关推荐
- Java接口中的成员变量为什么必须是static ?
接口的含义 接口就是提供一种统一的协议, 而接口中的属性也属于协议中的成员.它们是公共的,静态的,最终的常量.相当于全局常量. 在interface里面的变量都是public static final ...
- Java接口中的成员变量为什么必须是public static final?
在interface里面的变量默认都是public static final 的.所以可以直接省略修饰符: String param="ssm"://变量需要初始化 为什么接口要规 ...
- java 接口中的成员只有静态常量和_Java中抽象类和接口的具体区别是什么?
谢邀,直接回答. 接口在面向对象编程中占着很重要的地位,它是对于一种事物行为的抽象提取,内部只需要持有接口的引用,外部可以根据具体事物做不同的扩展,而不修改内部的引用逻辑,它的主要作用是在框架中实现不 ...
- java中为按钮添加图片_我们可以在Java接口中为成员定义私有和受保护的修饰符吗?...
java中为按钮添加图片 No, it is not possible to define private and protected modifiers for the members in int ...
- java类中,成员变量赋值第一个进行,其次是静态构造函数,再次是构造函数
如题是结论,如果有人问你Java类的成员初始化顺序和初始化块知识就这样回答他.下面是代码: package com.test;public class TestClass{// 成员变量赋值第一个执行 ...
- [转载] java接口中方法的默认访问修饰符为public
参考链接: Java接口方法 如果一个接口Cup有个方法use(),有个类SmallCup实现接口Cup,则在类SmallCup中正确的是? ( ) A.void use() { -} B.prot ...
- java接口里面可以定义变量么?
答案是:可以,但必须是public static final的. 既然JDK1.7开始支持接口中存在default方法和static方法,那么这些方法在实现上,难免需要一些变量提供数据支持. 先看一个 ...
- java 接口中变量修饰符,Java的访问修饰符与变量的作用域讲解
Java访问修饰符(访问控制符) Java 通过修饰符来控制类.属性和方法的访问权限和其他功能,通常放在语句的最前端.例如: ? Java 的修饰符很多,分为访问修饰符和非访问修饰符.本节仅介绍访问修 ...
- Java中的public static final来修饰数组与接口变量
Java中的public static final来修饰数组与接口变量 public static final来修饰数组 final对数组的作用 怎样实现对数组的public static final ...
最新文章
- 玩转android自定义控件二——自定义索引栏listview
- Winform与Webform中的对话框
- python中lambda 表达式(无参数、一个参数、默认参数、可变参数(*args、**kwargs)、带判断的lambda、列表使用lambda)
- 微软 Surface Pro、Studio、Laptop 全线更新
- idea、eclipse常用快捷键
- 第十天2017/04/25(2、企业财富库:)
- 【GAN优化】从动力学视角看GAN是一种什么感觉?
- 网速慢?不!可能是DNS出了问题! 公共DNS优选之 BAT 百度、腾讯、阿里、谷歌DNS哪个更快?
- html类名定义规则_HTML入门笔记1
- 如何才能更容易拿到大厂Offer?从理论到实践!
- 安装最新版本的PHPUnit后,不能使用
- 小目标Trick | Detectron2、MMDetection、YOLOv5都通用的小目标检测解决方案
- 系统分析师2020年真题解析
- 黑金花大理石_不同产地的黑金花大理石有哪些特点?
- 线性代数(一)矩阵和方程组
- BIP学习第一课,创建一个应用和实体并设计页面(图文)
- Java实现数字和人民币大写转换
- 为什么天蝎座出互联网大佬,我来告诉你原因!
- 无法启动此程序因为计算机丢失msvcr110.dll,Win7运行程序提示计算机中丢失msvcr110.dll如何解决...
- 虚拟路由器冗余协议(VRRP)
热门文章
- Leetcode 448. Find All Numbers Disappeared in an Array
- JS --- this(4)
- PHP程序员如何突破成长瓶颈(php开发三到四年)
- 【软考2】Java语言的基本知识汇总
- Django uplodify 多文件同时上传
- perlretut - Perl regular expressions tutorial ---- 中文版
- InfoPath 发布表单到SharePoint库报错
- 大数据相关端口号(hive hdfs spark)
- ubuntu16.04 wget java_linux centos ubuntu下载安装JDK wget方式下载JDK
- 开源性能测试工具JMeter快速入门(二)