???????final????
??????Java????????У?????????????????????????????????????????????????????????????????????????????????????????????У?????????????м????????????????????????????????????????????????????????????????????final??????????????????????и????
?????????????????????????????final??????????????????????????????final????????ú???????????????????????????????????????????????????????????????????????????
????????????????????static????final????????β??????洢???
??????????????????final???????塣
????class Hank
????{
????int i;
????public Hank(int i){this.i=i;}
????}
????public class FinalTest
????{
????private String s;
????public FinalTest(String s){this.s=s;}
????private final int value=20;
????private static final int INT_1=50;
????public static final int  INT_2=60;
????static final int INT_3=70;
????private final Hank h1=new Hank(1);
????private static final Hank h2=new Hank(2);
????private Hank h3=new Hank(3);
????private final int[] a={1??2??3??4??5};
????public String toString()
????{
????return s+": "+"INT_2= "+INT_2;
????}
????public static void main(String[] args)
????{
????FinalTest ft1=new FinalTest("ft1");
????//ft1.value++;?????????????
????ft1.h1.i++;//???????ò?????????????????????????
????ft1.h3=new Hank(2);
????//ft1.h1=new Hank(1);???????????ò?????????????????????
????for(int i=0;i<ft1.a.length;i++)
????{
????ft1.a[i]++; //???????ò?????????????????????????
????System.out.println(ft1.a[i]);
????}
????//ft1.a=new int[3]; ???????????ò?????????????????????
????}
????}
???????????final
???????????final??????и??????????????final??????????????????????????final?????磺
????class Blank
????{
????private int i;
????Blank(int i){this.i=i;System.out.println("Blank.i="+this.i);}
????}
????public class BlankFinal
????{
????private final int i;//blank final
????private final Blank b;//blank final reference
????BlankFinal()
????{
????i=1;b=new Blank(1);//????????????
????System.out.println("BlankFinal.i="+this.i);
????}
????BlankFinal(int i)
????{
????this.i=i;b=new Blank(i); //????????????
????System.out.println("BlankFinal.i="+this.i);
????}
????public static void main(String[] args)
????{
????new BlankFinal();//Blank.i=1;BlankFinal.i=1;
????new BlankFinal(2); //Blank.i=2;BlankFinal.i=2;
????}    
????}
????????final????
????Java??????????????б???????????????????????final?????????????嵱??????????????????????ò?????????????
????class Args
????{
????public void f(String s){System.out.println(s);}
????}
????public class ArgsFinal
????{
????void has(final Args arg)
????{
????//arg=new Args();???????final????
????arg.f("with final");
????}
????void dnthas(Args arg)
????{
????arg=new Args();//?????final????
????arg.f("without final");
????}
????public static void main(String[] args)
????{
????ArgsFinal af=new ArgsFinal();
????Args ar=new Args();
????af.has(ar);//with final
????af.dnthas(ar);//without final
????}
????}
???????final??
??????????????????????????????????ó?final?????????????????????????????κθ?????????ζ?????????????????磺
????Class Base{ …}
????Final Class SubClass{…}
????//! Class Derived extends SubClass{…}??????final??SubClass????????
??????????????????final???е???????????final???????????????????????????????е???????????final?????Щ?????????
????Reference:
????Bruce Eckel.<<Thinking in Java>>.Fourth Edition