close

加上final的變數不可以改變。

可以延遲宣告final,但在建構式內需要指定值。(如下例子)

class前加final代表不會有子類別、不能被繼承(類如String)

final方法可以被繼承,但是子類別無法覆載。(可以呼叫使用)

class Dad{

    final int x;

    public Dad(){

    //雖然下面的建構子裡有設定final的值了,但若是呼叫到無參數建構子就會無法確定x的值,所以語法會出錯

    x=10;

    //↑除非在這裡也幫final給值

    //放在其他方法中沒用,因為不一定會被呼叫

      

    }

    public Dad(int i){

       this.x = i;

       System.out.println("呼叫Dad"+i);

    }

    final public void method(){

       System.out.println("Hi");

    }

}

 

class Son extends Dad{

    public Son(){

       //我也是建構子

       super(10);

       System.out.print("呼叫Son");

    }

    public void method(){

       //出現錯誤- Cannot override the final method from Dad

    }

    public void take(){

       method();

       //可以呼叫

    }

}


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 乙方 的頭像
    乙方

    學習筆記專區

    乙方 發表在 痞客邦 留言(0) 人氣()