标签:方法 改变 数据类型 random 构造函数 参数 ext ret 扩展
final
,无法覆盖.注:
对于final类,可以通过组合方式对其扩展.
示例:
// 通过在类中构造一个私有的final类的实例,调用实例的方法,实现对应的功能.
// 再创建新的扩展方法
class newClass{
private oldClass old;
public void oldMethod(){
old.oldMethod();
}
public void newMethod(){
//...
}
}
stataic final
字段只能在声明或构造器中初始化.示例:
Random r = new Random();
final int i = r.nextInt(); // 非编译期常量
不能重排序一个final修饰的对象的成员域的写入和构造函数之外的对象的引用赋给一个引用变量.
public class Test{
final int[] arrays;
private Object obj;
public Test(){
arrays = new int[1];
arrays[0] = 1;
}
public void method(){
obj = new Object();
}
}
小结:
将指向对象的成员声明为final只能将该引用设为不可变,而非所指的对象.
final List l = new ArrayList();
l = new ArrayList(); // 不可以,引用不能指向新的对象
l.add("test"); // 可以,引用没有改变
标签:方法 改变 数据类型 random 构造函数 参数 ext ret 扩展
原文地址:https://www.cnblogs.com/truestoriesavici01/p/13216207.html