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

Java에서 정의된 다양한 유형의 중첩 클래스는 무엇입니까?

<시간/>

자바에서는 다른 클래스 안에 클래스를 정의할 수 있습니다. , 이러한 클래스를 중첩 클래스라고 합니다. . 비공개, 공개, 보호 또는 기본값 과 같은 액세스 수정자를 사용할 수 있습니다. 내부 클래스용 및 기본 또는 공개 외부 클래스에 대한 액세스 수정자 .

중첩 클래스에는 두 가지 유형이 있습니다. 자바로 정의되어 있습니다.

  • 정적 중첩 클래스
  • 비정적 중첩 클래스

정적 중첩 클래스

  • 내부 클래스를 정적으로 정의할 수 있으므로 이러한 유형의 클래스를 정적 중첩 클래스라고 합니다.
  • 중첩 클래스 정적 키워드로 정의됨 , 따라서 이러한 유형의 중첩 클래스는 외부 클래스의 인스턴스와 어떠한 관계도 공유하지 않습니다. .
  • 정적 중첩 클래스 정적 구성원에 액세스할 수 있음 우리 반의.

예시

class Car {
   static class Wheel {
      public void rotate() {
         System.out.println("The wheel is rotating");
      }
   }
}
public class Test {
   public static void main(String args[]) {
      Car.Wheel wheel = new Car.Wheel();
      wheel.rotate();
   }
}

출력

The wheel is rotating


비정적 중첩 클래스

  • 비정적 중첩 클래스 간접적으로 내부 클래스로 알려져 있습니다. 자바로.
  • 내부 클래스 외부 클래스의 개체와 연결됩니다. . 따라서 내부 클래스는 외부 클래스의 다른 변수 및 메서드처럼 취급됩니다.
  • 내부 클래스 외부 클래스 개체 또는 인스턴스와 연결되어 있으므로 정적 변수를 선언할 수 없습니다. 내부 클래스 내부.

예시

public class OuterClassTest {
   private int a = 10;
   public void innerClassInstance() {
      InnerClassTest inner = new InnerClassTest();
      inner.outerObject();
   }
   public static void main(String args[]) {
      OuterClassTest outer = new OuterClassTest();
      outer.innerClassInstance();
   }
   class InnerClassTest {
      public void outerObject() {
         System.out.println("Outer Value of a is: " + a);
      }
   }
}

출력

Outer Value of a is: 10