Java
 Computer >> コンピューター >  >> プログラミング >> Java

Javaでメンバー内部クラスをインスタンス化する方法は?


クラスの内部であるがメソッドの外部で宣言されているクラスは、メンバー内部クラスと呼ばれます。 。

メンバーの内部クラスは2つの方法でインスタンス化できます

  • クラス内で呼び出されます
  • クラス外で呼び出されました

内部クラスのルール

  • 外部クラス(内部クラスを含むクラス)は、コード内で必要な数の内部クラスオブジェクトをインスタンス化できます。
  • 内部クラスがパブリックであり、それを含むクラスでもある場合、他の無関係なクラスのコードでも内部クラスのインスタンスを作成できます。
  • 内部クラスオブジェクトが外部クラスオブジェクトで自動的にインスタンス化されることはありません。
  • 内部クラスが静的である場合、静的内部クラスは外部クラスインスタンスなしでインスタンス化できます。それ以外の場合は、内部クラスオブジェクトを外部クラスのインスタンスに関連付ける必要があります。
  • 外部クラスは、内部クラスのプライベートメソッドも呼び出すことができます。

クラス内で呼び出されるメンバー内部クラス

以下の例では、OuterClassのdisplay()メソッドからメンバー内部クラスのメソッドを呼び出しています。

public class OuterClass {
   private int value = 20;
      class InnerClass {
         void show() {
            System.out.println("Value is: " + value);
      }
   }
   void display() {
      InnerClass ic = new InnerClass();
      ic.show();
   }
   public static void main(String args[]){
      OuterClass oc = new OuterClass();
      oc.display();
   }
}
Value is: 20


クラスの外部で呼び出されるメンバー内部クラス

以下の例では、OuterClassの外部、つまりTestクラスからInnerClassのshow()メソッドを呼び出しています。

class OuterClass {
   private int value = 20;
      class InnerClass {
         void show() {
            System.out.println("Value is: "+ value);
      }
   }
}
public class Test {
   public static void main(String args[]) {
      OuterClass obj = new OuterClass();
      OuterClass.InnerClass in = obj.new InnerClass();
      in.show();
   }
}

出力

Value is: 20

  1. JavaでJTextFieldにパディングを追加するにはどうすればよいですか?

    JTextField JTextComponentのサブクラスです クラスであり、ユーザーが単一行形式でテキスト値を入力できるようにする最も重要なコンポーネントの1つです。 。 JTextFieldクラスは、 ActionListenerを生成します 内部に入力を入力しようとしたときのインターフェイス。 JTextFieldクラスの重要なメソッドは、 setText()、getText()、setBorder()、setEnabled()、です。 など setMargin(Insets s)を使用して、JTextFieldにパディングを追加できます JTextComponent ク

  2. Javaでサブパッケージを使用する方法は?

    サブパッケージはサブディレクトリに似ています。例を考えてみましょう。同社には、Dell.javaソースファイルを含むcom.apple.computersパッケージがあり、このような一連のサブディレクトリに含まれていました- ....\com\apple\computers\Dell.java コンパイル時に、コンパイラーは、クラス、インターフェース、および列挙型で定義されているものごとに異なる出力ファイルを作成します。出力ファイルのベース名はタイプの名前であり、その拡張子は.classです。 例- // File Name:Dell.java package com.apple.compu