帶有 Final 這個字的類別宣告稱為最終類別。 Java中的Final類別不能被其他類別繼承,也不能被其他類別擴展。最終類可以擴展其他類;它可以是子類,但不能是超類。建立不可變類別時,最終類別是最好的答案。最終類別是一個聲明,表明它是最終的,即該類別沒有子類別並且不能進一步擴展。除了不變性之外,最後一類還保留了一些更重要的內容。
有時,出於安全目的,最佳實踐是使用最終類,因為某些類執行與安全相關的操作,例如身份驗證和授權。在這種情況下,類別內部的字串和方法在應用程式的整個生命週期中都不應該被修改,那麼將類別設為 Final 是更好的做法。
廣告 該類別中的熱門課程 財務建模與估值 - 專業化 | 51 課程系列 | 30 次模擬測驗開始您的免費軟體開發課程
網頁開發、程式語言、軟體測試及其他
製作類,Final提高了應用程式的效率。
文法:
final class Student { private int age = 3; } /* // Trying to inherit the Student class class Info extends Student{ public static void main(String[] args) { //creating instance of the HeavyVehicle class System.out.println(“I am unable to inherit the class with the final keyword”); } }
以上給出的課程具有最終決定權。用另一個類別擴展這個最終類別將產生諸如“錯誤:無法從最終學生繼承”之類的錯誤,如下面的螢幕截圖所示。
當使用final關鍵字宣告一個類別時,它使JVM能夠做出假設和最佳化。一旦將final關鍵字新增到Java中的任何類別中,該類別的參考就無法變更。編譯器將檢查是否重新發生任何引用,從而產生錯誤。
如果我們將任何類別宣告為最終類別並實例化任何最終類,會發生什麼?然後在池區中建立;在池中建立的物件具有特殊的不變性功能。不可變 Java 類別的一些最佳範例是 String、Integer、Double 等。
如果將一個類別宣告為final,那麼它就會隱式地將該類別的所有方法宣告為final。 Final是Java中的修飾符;您可以在變數、方法或類別上使用final關鍵字。一旦將修飾符新增到類別中,該類別的所有變數和方法都將隱式不可變。使類別不可變有幾個好處,例如它是唯讀的,並且無法在沒有任何同步的情況下在多個線程中安全地共享。
給了以下 Java 中 Final 類別的範例:
HeavyVehicle 類別不允許在給定程式中繼承,因為它被聲明為最終類別。
代碼:
//This class will not be extended final class HeavyVehicle{ void messages(){ System.out.println("Your Vehicle Insurance is going to be expire in the next month"); } } // Inheriting HeavyVehicle class is not allowed as it is a final class /*class Vehicle extends HeavyVehicle{ } */ //main class class Car{ public static void main(String[] args) { //creating instance of the HeavyVehicle class HeavyVehicle hvObj = new HeavyVehicle(); hvObj.messages(); } }
如果我們嘗試繼承 HeavyVehicle 類,我們將收到以下錯誤,如下面的螢幕截圖所示。
現在我們將轉到下一個類,在其中建立最終類別的實例以使用其方法。下面是跳過繼承過程後程式的輸出。
在這個程式中,HeavyVehicle類別被宣告為final類,因此它不能在其他類別中擴展,因此它明確地將其引用傳遞給Vehicle類別方法。
代碼:
//This class will not be extended final class HeavyVehicle{ public double getDistanceCanCover(int mileage, double fuelStatus) { return mileage * fuelStatus; } } class Vehicle{ private int mileage; private double fuelStatus; Vehicle(int mileage, double fuelStatus){ this.mileage = mileage; this.fuelStatus = fuelStatus; } public void DisplayDistanceCanCover(HeavyVehicle hvObj) { double distCanCover = hvObj.getDistanceCanCover(this.mileage, this.fuelStatus); System.out.println("Distance Vehicle can cover in the available fuel: " + distCanCover); } } //main class class Car { public static void main(String[] args) { //creating instance of the HeavyVehicle class HeavyVehicle hvObj = new HeavyVehicle(); //creating instance of the Vehicle class Vehicle vehObj = new Vehicle(30, 3.5); //calling the method of the vehObj.DisplayDistanceCanCover(hvObj); } }
在上面給出的範例中,我們可以看到如何有效地使用 Final 類別。上述程序的輸出如下。
輸出:
在此範例中,最終類別繼承了另一個類,即 Student,但沒有其他類別可以擴展 Info 類,因為它是最終類別。
代碼:
class Student{ public void showDetails(String name, String email, int age) { System.out.println("\nStudent Name : "+ name); System.out.println("\nStudent Email : "+ email); System.out.println("\nStudent Age : "+ age); } } // Trying to inherit the Student class final class Info extends Student{ //main method of java to start program execution public static void main(String[] args) { //creating instance of this class Info infoObj = new Info(); //calling here method of the parent class infoObj.showDetails("Alex Carry", "[email protected]", 40); } }
輸出:
在上面的文章中,我們了解了 Java 中 Final 類別的重要性。我還回顧了人們通常將 Java 中的 Final 類別稱為不可變類別。我注意到與宣布期末課程相關的一些要點。在給定的範例中,我們可以看到如何透過引用傳遞最終類,從而在其他類中有效地使用它。
以上是Java 中的最終類的詳細內容。更多資訊請關注PHP中文網其他相關文章!