这是哥们在看面试题时问我的,有人说这样的问题没有意义,也有人说这样的问题只要具备夯实的基础就会戳破这个纸老虎
先说下这个问题吧
为什么要把接口中的成员变量定义为public static final
首先看下接口的定义:
接口是从多个相似类中抽象出来的规范,接口不提供任何实现
public 这个是肯定的,要让多个类来实现 必须是public的 不然你自己还不能实例化 要变量养着玩吗?内存都不惜的搭理……
static 这个也是肯定的,接口是不会实例化的,也就是说不会在内存中开辟空间,而static 在一加载类的时候就会被分配内存 接口自己在内存中没地盘,static还要地盘,矛盾
final 这个也是必须的 接口是规范,规则是你说变就变吗?如果任何去implement的类都去改变这个变量 那还是规范吗 况且java也会防止这种变态的行为
在接口的实现类中调用接口的static常量
public interface A{
public static final int i = 20;
}
public class Test implements A{
public static void main(){
Test t = new Test();
int j = A.i;
System.out.println(j);
}
}
两方面看吧:
1 编程就按照规则去做,不知道为什么非要通过不对的来考察对的知识点
2 要说考 也有道理,只要概念清,原理通 解决这个问题也是很轻松的。