Java の内部クラスと静的ネストクラス

Zeeshan Afridi 2023年1月30日 2022年5月31日
  1. Java のクラス
  2. Java でのクラスの構造
  3. Java のネストされたクラスのタイプ
Java の内部クラスと静的ネストクラス

Java は純粋なオブジェクト指向のプログラミング言語です。クラスなしでプログラムを作成することはできません。

Java のクラス

クラスは、クラスオブジェクトがアクセスできる一連のメソッドとプロパティを表すブループリントまたはプロトタイプです。実際の例を通してそれを理解しましょう。

Student は、student namestudent roll nocal_gpa()cal_fee() のようないくつかのプロパティとメソッドを持つクラスです。これらは、大学のすべての学生に共通のプロパティです。

クラスを作成し、必要なすべてのプロパティを定義し、各学生のクラスのオブジェクトを使用してそれらにアクセスするのは簡単です。

コード例:

package articlecodesinjava;
    class Student{
    String name;
    int rollNumber;

    void cal_gpa(){
        System.out.println("The method calculates CGPA.");
    }
    void cal_fee(){
        System.out.println("The method calculates the Semester fee.");
    }
}

public class ArticleCodesInJava {
    public static void main(String[] args) {
        // creating objects of Student class
        Student Jinku = new Student();
        Student Zeeshan = new Student();

        System.out.println("This is Jinku's details.");
        System.out.println(Jinku.name = "Jinku");
        System.out.println(Jinku.rollNumber = 1);
        Jinku.cal_fee();
        Jinku.cal_gpa();

        System.out.println("\n\nThis is Zeeshan's details.");
        System.out.println(Zeeshan.name = "Zeeshan Afridi");
        System.out.println(Zeeshan.rollNumber = 2);
        Jinku.cal_fee();
        Jinku.cal_gpa();
    }
}

出力:

This is Jinku's details.
Jinku
1
The method calculates the Semester fee.
The method calculates CGPA.


This is Zeeshan's details.
Zeeshan Afridi
2
The method calculates the Semester fee.
The method calculates CGPA.

学生の青写真は、名前、ロール番号、CGPA、料金などの基本的な情報を含むクラスとして定義されています。これで、すべての学生に対してこれらすべてを定義する代わりに、すべての学生に対してこれらのプロパティとメソッドを呼び出すことができます。

ご覧のとおり、JinkuZeeshan の 2つのオブジェクトを作成し、これらのオブジェクトの Student クラスのプロパティとメソッドを呼び出しました。

Java でのクラスの構造

Java は強力なオブジェクト指向のプログラミング言語です。1 行のコードでも、クラスと main メソッドが必要です。

クラスの構文:

AccessSpecifer classKeyword ClassName{
    //Class body
}

例:

Public class Student{
    //Class body
}
  1. AccessSpecifer は、コードのアクセス可能性に基づいて、publicprivate、または protected にすることができます。

  2. クラスを定義するには class キーワードが必須です。そうしないと、クラスを作成できません。

  3. クラスを作成するには ClassName も必須です。ベストプラクティスとガイドによると、名前は意味のあるものであり、コードを理解しやすく、読みやすくする必要があります。

  4. Class body は、クラスの境界または制限です。クラス本体内で変数とメソッドを定義できます。

    クラス本体は { で始まり、} で終わります。

Java のネストされたクラスのタイプ

ネストされたクラスは、別のクラス内のクラスを参照します。この現象は、ネストされた条件とループに似ています。

Java では、ネストされたクラスを作成できます。これにより、1つの場所で使用されるクラスを論理的にグループ化でき、カプセル化の使用も増えます。

ネストされたクラスの構文:

class OuterClass{  	//OuterClass
    Class InnerClass{	//InnerClass }
}

Java には、2 種類のネストされたクラスがあります。これらは次のとおりです。

  1. 静的にネストされたクラス
  2. 内部クラス

Java の静的ネストクラス

静的にネストされたクラスは、キーワード static を持つ外部クラスの静的メンバーとして定義されます。静的にネストされたクラスには、他の静的メンバーを使用して外部クラスをインスタンス化せずにアクセスできます。

他の静的メンバーと同様に、静的クラスはその外部クラスのメソッドとインスタンス変数にアクセスできません。

コード例:

public class OuterClass {
    static class NestedStaticClass { // Outer class
        public void my_method() {        //Inner class
            System.out.println("This is a static nested class.");
        }
    }

    public static void main(String args[]) { // Main function
        //object of nested class
        NestedStaticClass ob = new NestedStaticClass();
        ob.my_method();
    }
}

出力:

This is a static nested class.

Java の内部クラス

セキュリティは、ほとんどすべてのソフトウェアまたは組織の最優先事項です。Java はそのセキュリティでよく知られており、内部クラスはこれらのセキュリティ標準を達成するのに役立つコンポーネントの 1つです。

内部クラスにアクセスするには、最初に外部クラスのオブジェクトを作成する必要があります。次に、そのオブジェクトを使用して、内部クラスのオブジェクトを作成できます。

通常のクラスや単純なクラスとは異なり、内部クラスには、protectedprivate で指定されたプロパティとメソッドにアクセスする権限があります。また、外部オブジェクトが内部クラスにアクセスしないようにする場合は、内部クラスを private として宣言できます。

コード例:

public class OuterClass {
    class NestedStaticClass { // Outer class

        public void my_method() {    //Inner class
            System.out.println("This is a nested inner class.");
      }
    }

    public static void main(String args[]) { // Main function
        //object of nested class

        OuterClass OuterObj =  new OuterClass();
        OuterClass.NestedStaticClass obj = OuterObj.new NestedStaticClass();
        obj.my_method();
    }
}

出力:

This is a nested inner class.
Zeeshan Afridi avatar Zeeshan Afridi avatar

Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.

LinkedIn

関連記事 - Java Class