final修飾符(5)-final方法


  final修飾的類的方法不能被重寫,例如如果父類不希望子類重寫某個方法,則可以使用final修飾符修飾該方法

  在java的Object類里面有一個final方法:getClass(),因為Java不希望任何類重寫這個方法,所有使用final方法封裝起來,但對於該類提供的toString()和equals()方法,都允許子類重寫,因此都沒有用final修飾

代碼示例:

package com.j1803.finalTest;
public class FinalMethodTest1 extends Test{
    //編譯錯誤
    public void show(){};
    public static void main(String[] args) {
    }
}
class Test{
    public final void show(){};
}

  子類試圖重寫父類的final方法,編譯錯誤

  對於一個private修飾的父類方法,因為其僅在當前類中可見,其子類無法訪問該方法,所以子類無法重寫該方法,如果在子類中定義了一個與父類private方法有相同方法名,參數列表相同,返回值相同的方法,

也不是重寫,只是定義了一個新方法,因此,即使使用final修飾一個private訪問權限的方法,依然可以在其子類中定義與該方法具有相同方法名,相同參數列表,相同返回值類型的方法

package com.j1803.finalTest;

public class FinalMethodTest1 extends Test{
    //編譯錯誤
    public void show(){};
    public static void main(String[] args) {
        // TODO Auto-generated method stub
    }
}
class Test{
    //修改public 為private
    private final void show(){};
}

  final修飾的方法僅僅是不能被重寫,並不是不能被重載

package com.j1803.finalTest;
public class FinalMethodTest1{
    public final void show(){};
    public final void show(Object obj){};
    public static void main(String[] args) {
    }

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM