由此可見,結果發生了改變,說明final定義的變量是可以改變的,但是改變的不是變量的引址(即reference),而是變量的內容。 我們假如寫如下代碼 /* * some error will be threw A b=new A(); a=b; */ 則會發生錯誤,說明final類型的對象不能指向另外一個同類型的對象。
public class A { int t=10; public A() { } public void setT(int t){ this.t=t; } public int getT(){ return this.t; } public final void finalA(){ System.out.println(" final method finalA"); } private void privateA(){ System.out.println("private method privateA"); } private final void privateFinalA(){ System.out.println("private final method privateFinalA"); } }
2) AA.java 繼續自A.java package zy.pro.jbd.testbase;
public class AA extends A { public AA() { } /* public final void finalA(){ System.out.println(" final method finalA"); }
這幾行代碼是錯誤的
*/ private void privateA() { System.out.println("private method privateA in class AA");
}
private final void privateFinalA() { System.out.println("private final method privateFinalA in class AA"); }
}
3)我的測試程序FinalDemo.java package zy.pro.jbd.demo;
/** * this demo is created to test the usage of the final reserved Word */
import zy.pro.jbd.testbase.A;
public class FinalDemo {
final int numInt1 = 16; final String str = "zy"; final String str1; final A a = new A();
public FinalDemo() { str1 = "zy"; }
public static void main(String[] args) { System.out.println("-------------------------------------------------"); FinalDemo fd = new FinalDemo(); fd.executeFinalTest();
}
public void executeFinalTest() { this.testFinalInt(); this.testFinalString(); this.testFinalObject(); }