Final という単語を含むクラス宣言は、最終クラスとして知られています。 Java の Final クラスは継承できず、他のクラスによって拡張することもできません。最終クラスは他のクラスを拡張できます。サブクラスにはできますが、スーパークラスにはできません。不変クラスを作成する場合、最終クラスが最良の答えです。最終クラスは、最終クラスであることを示す宣言です。つまり、このクラスにはサブクラスがなく、これ以上拡張することはできません。最後のクラスは、不変性以外にもいくつかの重要性を保持しています。
一部のクラスは認証や認可などのセキュリティ関連の処理を実行するため、セキュリティ目的で最終クラスを使用することがベスト プラクティスとなる場合があります。このようなシナリオでは、クラス内の文字列とメソッドはアプリケーションのライフサイクル全体で変更すべきではないため、クラスを Final にすることをお勧めします。
広告 このカテゴリーの人気コース 財務モデリングと評価 - 専門分野 | 51 コースシリーズ | 30 回の模擬テスト無料ソフトウェア開発コースを始めましょう
Web 開発、プログラミング言語、ソフトウェア テスト、その他
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 です。この最終クラスを別のクラスで拡張すると、以下のスクリーンショットに示すように、「エラー: 最終学生から継承できません」などのエラーが発生します。
final キーワードを使用してクラスを宣言すると、JVM は仮定と最適化を行うことができます。 Java のクラスに Final キーワードを追加すると、そのクラスの参照は変更できなくなります。コンパイラは、参照が再実行されているかどうかをチェックし、エラーを生成します。
クラスを最終的に宣言し、最終クラスをインスタンス化するとどうなるでしょうか?その後、プールエリアに作成されます。プール内に作成されたオブジェクトには、特別な不変機能があります。不変 Java クラスの最良の例としては、String、Integer、Double などがあります。
クラスを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 クラスは最終クラスとして宣言されているため、他のクラスで拡張することができず、その参照を明示的に 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); } }
上記の例では、最終クラスを効果的に使用する方法がわかります。上記のプログラムの出力を以下に示します。
出力:
この例では、最後のクラスは他のクラス、つまり 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 の最終クラスを不変クラスと呼ぶことも確認しました。最終クラスの宣言に関連するいくつかの重要な点に気づきました。与えられた例では、最終クラスを参照を介して渡すことによって、他のクラスでどのように効果的に使用できるかがわかります。
以上がJava の最終クラスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。