黑马程序员技术交流社区

标题: 大家来聊一聊接口的成员变量 [打印本页]

作者: JunC    时间: 2016-8-19 23:43
标题: 大家来聊一聊接口的成员变量
关于接口的成员变量默认要加上 public final static,这三个修饰符的原因一直有疑问,有能详细的解答一下的吗?

作者: lrwillinggerry    时间: 2016-8-21 02:45
1.接口的权限之所以用public,是其类有足够大的权限让其他类去访问它的成员变量,要是其他类不能访问的话,创建接口有何意义?

二、为什么要用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。
作者: 爱你一万年    时间: 2016-8-21 09:34
又多了一点知识




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2