Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

Java에서 멤버 내부 클래스를 인스턴스화하는 방법은 무엇입니까?

<시간/>

클래스 내부에 선언되었지만 메서드 외부에 있는 클래스를 멤버 내부 클래스라고 합니다. .

두 가지 방법으로 멤버 내부 클래스를 인스턴스화할 수 있습니다.

  • 클래스 내에서 호출됨
  • 클래스 외부에서 호출됨

이너 클래스 규칙

  • 외부 클래스(내부 클래스를 포함하는 클래스)는 코드 내에서 원하는 만큼 내부 클래스 객체를 인스턴스화할 수 있습니다.
  • 내부 클래스가 public이고 포함하는 클래스인 경우 관련 없는 다른 클래스의 코드도 내부 클래스의 인스턴스를 생성할 수 있습니다.
  • 내부 클래스 객체는 외부 클래스 객체로 자동으로 인스턴스화되지 않습니다.
  • 내부 클래스가 정적이면 정적 내부 클래스는 외부 클래스 인스턴스 없이 인스턴스화할 수 있습니다. 그렇지 않으면 내부 클래스 개체가 외부 클래스의 인스턴스와 연결되어야 합니다.
  • 외부 클래스는 내부 클래스의 private 메소드도 호출할 수 있습니다.

클래스 내부에서 호출되는 멤버 내부 클래스

아래 예제에서는 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 외부, 즉 테스트 클래스에서 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