Java接口里定义成员变量 说明

首先你要弄清接口的含义.接口就是提供一种统一的'协议’,而接口中的属性也属于'协议’中的成员.它们是公共的,静态的,最终的常量.至关于全局常量。java


在interface里面的变量都是public static final 的。因此你能够这样写:spa

  public static final int i=10;orm

  或则对象

  int i=10;(能够省略掉一部分,在接口里的成员变量默认就是public static final)接口

  注意在声明的时候要给变量赋予初值变量

  解释:扩展

  首先你要弄清接口的含义.接口就是提供一种统一的’协议’,而接口中的属性也属于’协议’中的成员.它们是公共的,静态的,最终的常量.至关于全局常量.权限

  抽象类是不’彻底’的类,至关因而接口和具体类的一个中间层.即知足接口的抽象,也知足具体的实现.方法

  若是接口能够定义变量,可是接口中的方法又都是抽象的,在接口中没法经过行为来修改属性。有的人会说了,没有关系,能够经过实现接口的对象的行为来修改接口中的属性。这固然没有问题,可是考虑这样的状况。若是接口A中有一个public访问权限的静态变量a。按照java的语义,咱们能够不经过实现接口的对象来访问变量a,经过A.a = xxx;就能够改变接口中的变量a的值了。正如抽象类中是能够这样作的,那么实现接口A的全部对象也都会自动拥有这一改变后的a的值了,也就是说一个地方改变了a,全部这些对象中a的值也都跟着变了。这和抽象类有什么区别呢,怎么体现接口更高的抽象级别呢,怎么体现接口提供的统一的协议呢,那还要接口这种抽象来作什么呢?因此接口中不能出现变量,若是有变量,就和接口提供的统一的抽象这种思想是抵触的。因此接口中的属性必然是常量,只能读不能改,这样才能为实现接口的对象提供一个统一的属性。im

  通俗的讲,你认为是要变化的东西,就放在你本身的实现中,不能放在接口中去,接口只是对一类事物的属性和行为更高层次的抽象。对修改关闭,对扩展(不一样的实现implements)开放,接口是对开闭原则的一种体现。

相关文章
相关标签/搜索