A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© JunC 中级黑马   /  2016-8-19 23:43  /  401 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

关于接口的成员变量默认要加上 public final static,这三个修饰符的原因一直有疑问,有能详细的解答一下的吗?

2 个回复

倒序浏览
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。
回复 使用道具 举报
又多了一点知识
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马