ネストされたクラスは、別のクラスの内部にあるクラスを指します。 Java を使用すると、Java でネストされたクラスを作成できます。ネストされたクラスは、その外部クラスのメンバーの 1 つです。また、パブリック、プライベート、保護、またはデフォルトとして宣言することもできます。ネストされたクラスは外部クラスの他のメンバーにアクセスできますが、その逆は不可能です。これは、ネストされたクラスはそれを囲む外部クラスのメンバーであるため、外部クラスはネストされたクラスのメンバーにアクセスできないことを意味します。そのため、ネストされたクラスとそのメンバーにアクセスするにはドット (.) が使用されます。ネストされたクラスには静的キーワードがありません。
無料ソフトウェア開発コースを始めましょう
Web 開発、プログラミング言語、ソフトウェア テスト、その他
ネストされたクラスは 2 つのカテゴリに分類されます:
構文:
以下の構文では、OuterClass には、Nested クラスとして知られる内部クラス InnerClass があります。
//Outer class class OuterClass { //Inner class as a nested class class InnerClass { .... } }
プログラミングの世界では、以下に示すように、ネストされたクラスが重要な役割を果たします。
以下に、Java のネストされたクラスの例を示します。
この例では、外部クラスを参照することによって内部クラスのインスタンス化を観察できます。
コード:
// Outer class which contains nested class class Engine{ static double fuel = 20.0; //static nested class static class Ignition{ void showFuelSpend() { System.out.println("Fuel Spend = " + fuel + " Ltrs"); } } } //class uses nested class inside it public class NestedClassExample{ public static void main(String[] args) { //creating object of the nested class by referencing parent class Engine.Ignition engIgnitObj = new Engine.Ignition(); //calling method of the nested class engIgnitObj.showFuelSpend(); } <u>}</u>
出力:
この例では、内部クラスをインスタンス化する方法を確認できます。内部クラスのインスタンスを作成するには、内部クラスのインスタンスが必要です。アウタークラスのインスタンスを作成すると、その中に入れ子になったクラスのインスタンスを作成できるようになります。
コード:
//Outer class class Volume{ double x, y, z; Volume(double x, double y, double z) { this.x = x; this.y = y; this.z = z; } // Nested inner class class Measurement{ //method to calculate the total area void totalArea(double i, double j) { System.out.println("\nArea for the provided container is " + (i * j)); } //method to calculate the total volume void totalVolume(double i, double j, double k) { System.out.println("\nVolume for the provided container is " + (i * j * k)); } } } public class NestedClassCalcExample { public static void main(String[] args) { //passing here all the parameter to constructor Volume volObj = new Volume(30.0, 25, 18.0); Volume.Measurement volMeasureObj = volObj.new Measurement(); // calculating total area volMeasureObj.totalArea(volObj.x, volObj.y); // calculating total volume volMeasureObj.totalVolume(volObj.x, volObj.y, volObj.z); } }
出力:
この例は、ネストされたクラス オブジェクトのインスタンス化が外部クラスのインスタンス内でどのように行われるかを示します。
コード:
//outer class class Electronic{ String circuitName, String circuitType; double circuitCost; //constructor of outer class Electronic(String name, String type, double cost) { this.circuitName = name; this.circuitType = type; this.circuitCost = cost; } String getCircuitName() { return this.circuitName; } //nested class class Circuit{ String circuitType; double circuitCost; void setCircuitType() { this.circuitType = "Transistor"; this.circuitCost = 430.0; } //get circuit type using this method String getCircuitType(){ return this.circuitType; } //get circuit cost using this method double getCircuitCost(){ return this.circuitCost; } } } public class Product{ public static void main(String[] args) { Electronic elObj = new Electronic("Amplifier", "Integrated", 375.0); Electronic.Circuit circuit = elObj.new Circuit(); //printing here the values before reset it System.out.println("\nCircuit Name : " + elObj.circuitName); System.out.println("\nCircuit Type : " + elObj.circuitType); System.out.println("\nCircuit Cost : " + elObj.circuitCost); //resetting some value circuit.setCircuitType(); //printing here the values before reset it System.out.println("\n\nCircuit Name : " + elObj.getCircuitName()); System.out.println("\nCircuit Type : " + circuit.getCircuitType()); System.out.println("\nCircuit Cost : " + circuit.getCircuitCost()); } }
出力:
上記の記事では、Java でネストされたクラスがどのように重要であるかを説明しました。クラスのネストを利用することをお勧めします。上記の記事では、Nested クラスの使いやすさについても説明しています。
以上がJavaのネストされたクラスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。