文章列表
众所周知static字段是在类加载的时候完成初始化过程的。
而final字段呢。
在类加载时给予空间而不是对其进行初始化。
例如private final String strFinal="ok";
加载时给一个String类型空间大小,栈中的strFinal引用指向这个空间。
初始化时也就是调用类的构造器时。将“ok”初始化。
下面的代码展示了:
public class DemoB {
private static DemoB demoB = new DemoB();
public final String strFinal="final字段初始化&qu ...
首先final字段是一经初始化就无法改变的。
其他属性就不说了。
final分为static和非static的。
先说非static的final。
final int i = 10;
看下面的一段代码:
class ATest {
final int i;
ATest() {
i=10;
}
}
这里调用的是构造器进行对final字段初始化
问题出现了:类进行实例化的时候的先初始化变量也就是这里的“i”;而在这里i并没有给予赋值。也就是一旦定义就无法改变其值。那岂不是和final的定义发生矛盾了吗
其实不然,经过这几天的摸索其实并不是这样运行的:
在实例化ATest类时。 ...
package demo;
//接口分离原则
interface Guest {
// 这里定义浏览者只有查看权限
void see();
}
interface Master {
//这里定义版主有查看和修改权限
void see();
void change();
}
interface Admin {
//这里定义管理员有查看、修改和删除权限
void see();
void change();
void delete();
}
class CreateLimit implements Guest, Mas ...