在interface里面的变量都是public static final的。可以这样写:public static final int i=10或者int i=10。
public interface MyInterface
{
// 默认为public static int a = 10;
int a = 10;
}
public class MyTest
{
public static void main(String[] args)
{
 int a = MyInterface.a;
 System.out.println(a);
}
}
       首先要弄清接口的含义,接口就是提供一种统一的“协议”,而接口中的属性也属于“协议”中的成员,它们是公共的、静态的、最终的常量,相当于全局常量。抽象类是不完全的类,相当于是接口和具体类的一个中间层。即满足接口的抽象,也满足具体的实现。
       如果接口可以定义变量,但是接口中的方法又都是抽象的,在接口中无法通过行为来修改属性。有的人会说没关系,可以通过实现接口的对象的行为来修改接口中的属性。这当然没有问题,但是考虑这样的情况。如果接口A中有一个public访问权限的静态变量a。按照Java的语义,我们可以不通过实现接口的对象来访问变量a,通过A.a = xxx;就可以改变接口中的变量a的值了。正如抽象类中是可以这样做的,那么实现接口A的所有对象也都会自动拥有这一改变后的a的值了,也就是说一个地方改变了a,所有这些对象中a的值也都跟着变了。这和抽象类有什么区别呢,怎么体现接口更高的抽象级别呢,怎么体现接口提供的统一的协议呢,那还要接口这种抽象来做什么呢?所以接口中不能出现变量,如果有变量,就和接口提供的统一的抽象这种思想是抵触的。所以接口中的属性必然是常量,只能读不能改,这样才能为实现接口的对象提供一个统一的属性。
       通俗的讲,要变化的东西,就放在自己的实现中,不能放在接口中去,接口只是对一类事物的属性和行为更高层次的抽象。对修改关闭,对扩展(不同的实现implements)开放,接口是对开闭原则的一种体现。

原帖地址:http://hi.baidu.com/xuehenfeng/item/316f801314059ff365eabf82

转载于:https://blog.51cto.com/woshixy/1409545

Java中接口定义成员变量相关推荐

  1. java中局部变量和成员变量

    java中局部变量和成员变量 1. 定义的位置不一样 局部变量:在方法的内部 成员变量:在方法的外部,直接写在类当中 2. 作业范围不一样 局部变量:只有方法当中才能使用,出了方法就不能再用 成员变量 ...

  2. java什么是局部变量_java局部变量是什么意思?Java中局部变量与成员变量有哪些区别?...

    大家知道Java中的局部变量吗?今天我们要了解的Java的局部变量及它和成员变量的区别,一起来看看吧. 什么是局部变量? 局部变量时就是只有一部分可见的变量,例如定义在方法中的变量,只有这百个方法才能 ...

  3. java变量同名_浅析Java中局部变量与成员变量同名解决技巧

    要想区分这哥俩,首先,我们得知道它们分别是什么.先从成员变量下刀. 成员变量 我们来研究一个事物: 属性:外在特征:例如人的身高,体重 行为:能够做什么:例如人有说话,打球等行为. 而在Java语言中 ...

  4. Java中反射获取成员变量、构造方法、成员方法及类名

    都说反射是框架的灵魂,但是反射到底是啥呢,今天就聊聊反射的基础操作,也是必备操作. 反射机制是在程序运行时,对任意一个类,都能够知道这个类的所有属性和方法,对于任意一个对象,都能调用他的任意一个属性和 ...

  5. java中局部变量和成员变量_Java中局部变量和成员变量可以转换么?

    /* *创建玩家 */ public void s(){ Scanner input = new Scanner(System.in); List shoupai1 = new ArrayList() ...

  6. java中不能定义为变量名称_Java,“变量名”不能解析为变量

    我使用Java使用Eclipse,出现此错误: "Variable name" cannot be resolved to a variable. 使用此Java程序: publi ...

  7. [转载] 面试题:说说Java中接口、类、成员变量、成员方法、构造方法有哪些访问修饰符和他们的作用范围

    参考链接: Java中的访问修饰符 * 问题:说说Java中接口.类.成员变量.成员方法.构造方法有哪些访问修饰符和他们的作用范围 * 答:接口的访问修饰符只有public 1个 *    类的访问修 ...

  8. Java抽象类和接口中可以有成员变量吗?

    public class AbstractTest {public static void main(String[] args) {CC cc = new CC();System.out.print ...

  9. java中类作为成员变量类型使用、接口作为成员变量类型使用、接口作为方法的参数或返回值使用

    类作为成员变量类型使用: 自定义的类也可以作为成员变量使用,如: // 1.创建一个电脑角色的类: public class Computer{private String computername; ...

最新文章

  1. apue读书笔记-第十二章
  2. leetcode-53 最大子序和
  3. git获取指定release版本代码
  4. Android Jetpack组件之 Room使用-源码
  5. 〖Java〗Eclispe安装和使用viplugin
  6. 打印金子塔||打印乘法表 用函数的思想实现
  7. wxWidgets:wxList< T >类模板的用法
  8. node.js模块和包
  9. 斜挎包长度到哪里合适_电视背景墙的位置在哪里比较合适?进来你都知道了
  10. maven(二) maven项目构建ssh工程(父工程与子模块的拆分与聚合)
  11. tf.slim构建vgg16和resnet网络实现图像分类,亲测准确率99%
  12. 企业安全管理的内外合规之ISO27001标准详解
  13. 机器学习实战应用案例100篇(十)-蝙蝠算法从原理到实战应用案例
  14. GJB 软件定型测评大纲(模板)
  15. 链脉名片谈互联网经典营销理论“鱼塘理论”
  16. 很酸-2021年全球程序员收入报告出炉
  17. CentOS7 aarch64 arm平台sysbench安装及CPU、内存、IO测试
  18. 搭载固态硬盘的服务器究竟比机械硬盘快多少
  19. Google GMS Crash 优化方案
  20. SpringBoot 打成的 jar 包和普通的 jar 包有什么区别

热门文章

  1. 369寝室(数组、模拟)
  2. 7-53 字符串逆序 (10 分)
  3. 两种方法:实现输入一行字符,统计数字字符、英文字母和其他字符的个数(C语言)
  4. laravel 先排序后分组怎么写_希尔排序算法拆解解析
  5. c语言课程设计学生成绩簿,c语言课程设计—学生成绩管理系统
  6. linux显示文本文件指定行数的数据
  7. The easy way to implement a Red-Black tree
  8. django源码阅读
  9. WebPart的使用
  10. 诗与远方:无题(六十三)- 杂诗,然,矣