java-final使用细节1
  源码 package com.Final;
public class Final02 { public static void main(String[] args) { CC cc = new CC(); EE ee = new EE(); ee.cal(); } } class AA{ /* 1. 定义时 如public final double TAX_RATE = 0.08; 2. 在构造器中 3. 在代码块中 */ public final double TAX_RATE = 0.08;//1. 定义时赋值 public final double TAX_RATE2; public final double TAX_RATE3;
public AA() {//2. 在构造器中赋值
TAX_RATE2 = 1.1;
}
{//3. 在代码块中赋值
TAX_RATE3 = 8.8;
}
}
class BB{ /* 如果final修饰的属性是静态的 则初始化的位置只能是 1. 定义时 2. 在静态代码块中 不能在构造器中赋值 */ public static final double TAX_RATE = 99.9; public static final double TAX_RATE2;
static {
TAX_RATE2 = 3.3;
}
}
//final类不能继承 但是可以实例化对象 final class CC{}
//如果类不是final类 但是含有final方法 则该方法虽然不嫩重写 但是可以被继承 //即 仍然遵守继承的机制 class DD{ public final void cal(){ System.out.println(“cal()方法”); } } class EE extends DD{}
java-final使用细节2
  源码 package com.Final;
public class FinalDetail { public static void main(String[] args) { System.out.println(BBB.num); } } final class AAA{ //一般来说 如果一个类已经是final类了 据没有必要再将方法修饰成final方法了 //public final void cry(){} }
//final 和 static往往搭配使用 效率更高 不会导致类加载 底层编译器做了优化处理 class BBB{ public final static int num = 10000;//final 和 static 位置可以调换 static { System.out.println(“BBB 静态代码块被执行”); } }
|