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

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

在interface里面的变量都是public static final 的。所以你可以这样写:

  public static final int i=10;

  或则

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

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

  解释:

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

  抽象类是不’完全’的类,相当于是接口和具体类的一个中间层.即满足接口的抽象,也满足具体的实现.

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

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

时间: 2024-08-02 02:44:39

Java接口里定义成员变量 说明的相关文章

java接口中定义成员变量

//抽象类中可以定义如下成员变量:public abstract class People { public String name; public int age; public abstract void work(); } 而如下截图中的People接口中,定义成员变量报错: 接口的含义理解:接口可以理解成统一的"协议",而接口中的属性也属于协议中的内容;但是接口的属性都是公共的,静态的,最终的 接口的成员特点: A:成员变量 只能是常量.默认修饰符 public static

Java接口中的成员变量的意义

转自:http://blog.csdn.net/ameyume/article/details/6189749 在interface里面的变量都是public static final 的.所以你可以这样写:public static final int i=10;或则int i=10:(可以省略掉一部分) 注意在声明的时候要给变量赋予初值 解释: 首先你要弄清接口的含义.接口就是提供一种统一的'协议',而接口中的属性也属于'协议'中的成员.它们是公共的,静态的,最终的常量.相当于全局常量.抽象

阿里巴巴Java开发手册剖析-01.尽量不要在接口里定义变量

[推荐]接口类中的方法和属性不要加任何修饰符号(public 也不要加) ,保持代码的简洁性,并加上有效的 Javadoc 注释.尽量不要在接口里定义变量,如果一定要定义变量,肯定是与接口方法相关,并且是整个应用的基础常量. 在effective java中文版第2版中第19条:接口只用于定义类型 当类实现接口时,接口就充当可以引用这个类的实例的类型(type).因此.类实现了接口,就表明客户端可以对这个类的实例实施某些动作.为了任何其他目的而定义接口是不恰当的. 有一种接口被称为常量接口,它不

接口里可以有变量么?

浅谈为什么Java接口中不允许定义变量? 它们是公共的,静态的,最终的常量.相当于全局常量.抽象类是不“完全”的类,相当于是接口和具体类的一个中间层.即满足接口的抽象,也满足具体的实现. 如果接口可以定义变量,但是接口中的方法又都是抽象的,在接口中无法通过行为来修改属性.有的人会说了,没有关系,可以通过实现接口的对象的行为来修改接口中的属性.这当然没有问题,但是考虑这样的情况.如果接口 A 中有一个public 访问权限的静态变量 a.按照 Java 的语义,我们可以不通过实现接口的对象来访问变

为什么接口要规定成员变量必须是public static final的呢?(转)

在interface里面的变量默认都是public static final 的.所以可以直接省略修饰符: String param="ssm"://变量需要初始化 为什么接口要规定成员变量必须是public static final的呢? 答: 首先接口是一种高度抽象的"模版",,而接口中的属性也就是’模版’的成员,就应当是所有实现"模版"的实现类的共有特性,所以它是public static的 ,是所有实现类共有的 .假如可以是非static

Objective-c中定义成员变量

ios定义成员变量的方法: 如果只是内部访问,完全可以直接用_xxx(下划线),无需自己定义,编译器会自动生成 如果需要外部访问这个变量,可以用 @property xxx ; @synthesize xxx = _xxx ,这样,编译器会自动生成 get,set函数 :可以很明确的表明这是一个向外部提供set.get方法的属性. http://www.tairan.com/archives/194 Objective-c中定义成员变量

Java中接口里定义的成员变量

首先你要弄清接口的含义.接口就是提供一种统一的'协议',而接口中的属性也属于'协议'中的成员.它们是公共的,静态的,最终的常量.相当于全局常量. 在interface里面的变量都是public static final 的.所以你可以这样写: public static final int i=10; 或则 int i=10;(可以省略掉一部分) 注意在声明的时候要给变量赋予初值 解释: 首先你要弄清接口的含义.接口就是提供一种统一的'协议',而接口中的属性也属于'协议'中的成员.它们是公共的,

什么是java的局部变量,成员变量,全局变量?

public class Test { private String name;//成员变量,也是全局变量 public void changeName() { String n = "tomoya";//n就是局部变量 name = n; }} 总的来说,定义在类里的,也就是name那个位置,就是成员变量,在JAVA里全局变量和成员变量是一个意思.定义在方法里或域里就叫做局部变量,所谓域就是{}里面,比如public void show() { int b = 2;//局部变量 if

再学Java 之 interface的成员变量

前言:最近在学多线程,写“哲学家就餐问题(Dining Philosophers)”的时候,需要定义一个全局的变量,即哲学家的人数.常用的做法是在其中一个类中定义一个static final的变量,然后让其他类通过类名访问他.在这里,想使用之前实训项目的第一版应用层协议的设计想法,即使用一个接口类来定义所有子类都会使用到的变量.然后,就引出了一个interface成员变量和static final的问题. (一)一个简单的问题 首先,看一段代码: 1 //Variable.java 2 publ