巢狀類別是指位於另一個類別內部的類別。 Java允許我們在java中建立巢狀類別。嵌套類別是其外部類別的成員之一。它還可以聲明為公共、私有、受保護或預設。嵌套類別可以存取外部類別的其他成員,反之則不可能。這意味著外部類別無法存取巢狀類別成員,因為巢狀類別是其封閉外部類別的成員,因此點 (.) 用於存取巢狀類別及其成員。巢狀類別沒有任何靜態關鍵字。
開始您的免費軟體開發課程
網頁開發、程式語言、軟體測試及其他
巢狀類別分為兩類:
文法:
在下面的語法中,OuterClass 有一個內部類別 InnerClass,稱為巢狀類別。
//Outer class class OuterClass { //Inner class as a nested class class InnerClass { .... } }
在程式設計世界中,Nested 類別扮演著重要的角色,如下所示:
下面給出了 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()); } }
輸出:
在上面的文章中,我們回顧了 Nested 類別在 java 中的重要性。利用類別的嵌套是一個很好的做法。上面的文章也介紹了Nested類別的可用性。
以上是Java 中的巢狀類別的詳細內容。更多資訊請關注PHP中文網其他相關文章!