Java中接⼝⾥定义的成员变量
原⽂:
在interface⾥⾯的变量都是public static final 的。所以你可以这样写:
public static final int i=10;
或则
int i=10;(可以省略掉⼀部分)
注意在声明的时候要给变量赋予初值
解释:
⾸先你要弄清接⼝的含义.接⼝就是提供⼀种统⼀的’协议’,⽽接⼝中的属性也属于’协议’中的成员.它们是公共的,静态的,最终的常量.相当于全局常量.
抽象类是不’完全’的类,相当于是接⼝和具体类的⼀个中间层.即满⾜接⼝的抽象,也满⾜具体的实现.
java接口可以创建对象吗如果接⼝可以定义变量,但是接⼝中的⽅法⼜都是抽象的,在接⼝中⽆法通过⾏为来修改属性。有的⼈会说了,没有关系,可以通过实现接⼝的对象的⾏为来修改接⼝中的属性。这当然没有问题,但是考虑这样的情况。如果接⼝A中有⼀个public访问权限的静态变量a。按照java 的语义,我们可以不通过实现接⼝的对象来访问变量a,通过A.a = xxx;就可以改变接⼝中的变量a的值了。正如抽象类中是可以这样做的,那么实现接⼝A的所有对象也都会⾃动拥有这⼀改变后的a的值了,也就是说⼀个地⽅改变了a,所有这些对象中a的值也都跟着变了。这和抽象类有什么区别呢,怎么体现接⼝更⾼的抽象级别呢,怎么体现接⼝提供的统⼀的协议呢,那还要接⼝这种抽象来做什么呢?所以接⼝中不能出现变量,如果有变量,就和接⼝提供的统⼀的抽象这种思想是抵触的。所以接⼝中的属性必然是常量,只能读不能改,这样才能为实现接⼝的对象提供⼀个统⼀的属性。
通俗的讲,你认为是要变化的东西,就放在你⾃⼰的实现中,不能放在接⼝中去,接⼝只是对⼀类事物的属性和⾏为更⾼层次的抽象。对修改关闭,对扩展(不同的实现implements)开放,接⼝是对开闭原则的⼀种体现。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论