为什么接口里边的属性是默认为final static 的

Q:为什么接口里边的属性是默认为final static 的?

A:
static:接口是无法被实例化的,所以接口里边的属性与对象无关,因此属性是静态的;
final:
  大家的疑惑点是:为什么接口的属性是final的。
有些答案
  类在创建对象的时候会给他开辟一个内存空间,并且初始化类变量和方法,对于类变量,会自动赋初值(例如int 0, Boolean false…)。而接口无法实例化,因此接口里边的属性就是final的。

我觉得还是很有问啊:接口无法实例化,与属性是不是final有什么逻辑关系?

我的观点:
  接口是一个公用的类,既然是公用的类,那接口里边的属性是变量有什么意义呢?他被n个类实现,难道还要继承他的一个变量?
  有人就会这么说了,重构啊,写一个变量了不用再写实现类里边的这个变量,不是很简洁嘛,利于重构嘛。
  我们知道抽象类有final、非final属性,那如果接口也这样有什么意义呢?接口就是必须跟抽象方法有区别,不然他存在有什么意思?并且还是很常用。接口定义为共享类,他的属性是final的,也就是常量,被实现的类公用(非private属性)。因此他是final的

因此接口里面的属性是static final的。

猜你喜欢

转载自blog.csdn.net/u010986518/article/details/82429999