解析面试题-接口中的成员变量为什么要定义成public static final

来源:互联网 发布:网络配线实训装置 编辑:程序博客网 时间:2024/06/05 14:39

这是哥们在看面试题时问我的,有人说这样的问题没有意义,也有人说这样的问题只要具备夯实的基础就会戳破这个纸老虎

先说下这个问题吧

为什么要把接口中的成员变量定义为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 要说考 也有道理,只要概念清,原理通 解决这个问题也是很轻松的。


原创粉丝点击