ホームページ > Java > &#&チュートリアル > Javaのネストされたクラス

Javaのネストされたクラス

WBOY
リリース: 2024-08-30 16:00:19
オリジナル
731 人が閲覧しました

ネストされたクラスは、別のクラスの内部にあるクラスを指します。 Java を使用すると、Java でネストされたクラスを作成できます。ネストされたクラスは、その外部クラスのメンバーの 1 つです。また、パブリック、プライベート、保護、またはデフォルトとして宣言することもできます。ネストされたクラスは外部クラスの他のメンバーにアクセスできますが、その逆は不可能です。これは、ネストされたクラスはそれを囲む外部クラスのメンバーであるため、外部クラスはネストされたクラスのメンバーにアクセスできないことを意味します。そのため、ネストされたクラスとそのメンバーにアクセスするにはドット (.) が使用されます。ネストされたクラスには静的キーワードがありません。

無料ソフトウェア開発コースを始めましょう

Web 開発、プログラミング言語、ソフトウェア テスト、その他

Java のネストされたクラスのカテゴリ

ネストされたクラスは 2 つのカテゴリに分類されます:

  1. 静的入れ子クラス: キーワード「static」で宣言された入れ子クラスを静的入れ子クラスと呼びます。静的ネストされたクラスには、外部クラスを参照することによってアクセスできます。静的クラスを持つネストされたクラスは、外部クラスの非静的変数とメソッドにアクセスできません。
  2. 内部クラス: 非静的入れ子クラスは、静的に宣言されていない内部クラスです。 静的でネストされたクラスは、プライベートと宣言されている場合でも、すべての静的および非静的変数とメソッドにアクセスすることはできません。内部クラスも2種類あります。
  • ローカル内部クラス
  • 匿名の内部クラス

構文:

以下の構文では、OuterClass には、Nested クラスとして知られる内部クラス InnerClass があります。

//Outer class
class OuterClass {
//Inner class as a nested class
class InnerClass {
....
}
}
ログイン後にコピー

Java でのネストされたクラスの使用

プログラミングの世界では、以下に示すように、ネストされたクラスが重要な役割を果たします。

  • クラスのネストは、別のクラス スコープ内のクラスをグループ化することに似ています。ネストされたクラスを他の場所で使用することはできません。
  • 可読性と保守性の向上: クラスをネストすると、コードの可読性が向上し、他のクラスに影響を与えないため保守が容易になります。
  • コードの削減: ネストされたクラスを使用すると、コード行が削減され、最適化につながります。
  • カプセル化の増加: ネストされたクラスでは、内部クラスは、それを囲んでいる外部クラスのメンバーにアクセスできます。同時に、外部クラスは内部クラスのメンバーに直接アクセスできません。さらに、内部クラスは外部プログラムからは表示されず、アクセスもできません。

Java のネストされたクラスの例

以下に、Java のネストされたクラスの例を示します。

例 #1

この例では、外部クラスを参照することによって内部クラスのインスタンス化を観察できます。

コード:

// 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>
ログイン後にコピー

出力:

Javaのネストされたクラス

例 #2

この例では、内部クラスをインスタンス化する方法を確認できます。内部クラスのインスタンスを作成するには、内部クラスのインスタンスが必要です。アウタークラスのインスタンスを作成すると、その中に入れ子になったクラスのインスタンスを作成できるようになります。

コード:

//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);
}
}
ログイン後にコピー

出力:

Javaのネストされたクラス

例 #3

この例は、ネストされたクラス オブジェクトのインスタンス化が外部クラスのインスタンス内でどのように行われるかを示します。

コード:

//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のネストされたクラス

結論

上記の記事では、Java でネストされたクラスがどのように重要であるかを説明しました。クラスのネストを利用することをお勧めします。上記の記事では、Nested クラスの使いやすさについても説明しています。

以上がJavaのネストされたクラスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート