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

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

先说下这个问题吧

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值