>  기사  >  Java  >  Java 내부 클래스(익명 클래스, 익명 객체, 정적 내부 클래스)에 대한 자세한 설명 및 예

Java 내부 클래스(익명 클래스, 익명 객체, 정적 내부 클래스)에 대한 자세한 설명 및 예

高洛峰
高洛峰원래의
2017-01-11 15:38:451466검색

내부 클래스 소개

다른 클래스에 정의된 클래스를 내부 클래스라고 합니다

멤버 내부 클래스

1..new 먼저 멤버 내부를 만들어야 합니다. class 외부 클래스의 인스턴스를 생성한 후 .new 를 통해 내부 클래스의 객체를 생성합니다.

2..this 클래스 이름을 통해 외부 클래스의 모든 속성과 메서드에 접근할 수 있습니다. 외부 클래스.이것.

public class Test1 {
 
  String name = "asnd";
 
  public static void main(String[] args) {
 
    Test1 test1 = new Test1();
    Inner mInner = test1.new Inner();
    mInner.print();
  }
 
  void show() {
    System.out.println("show");
  }
 
  public class Inner {
 
    String name = "123";
    private void print(){
      show();
      System.out.println(name);//打印的是123
      System.out.println(Test1.this.name);//打印的是asnd
    }
  }
}

익명 내부 클래스

이름이 없는 클래스입니다. 클래스가 생성되면 객체도 생성됩니다.

한 번만 사용하면 되는 클래스의 경우 익명 내부 클래스를 사용할 수 있습니다

File file = new File("D:/cc.txt") {
 
    @Override
    public boolean delete() {
      System.out.println("是否删除y/n");
      Scanner input = new Scanner(System.in);
      String str = input.next();
      if (str.equals("y")) {
        return super.delete();
      }
      System.out.println("删除失败");
      return false;
    }
  };
  file.delete();
 
}

익명 개체

이 개체는 한 번만 액세스하면 됩니다. .

new Thread() {
 
      @Override
      public void run() {
        System.out.println("线程开始!");
        try {
          Thread.sleep(2000);
          System.out.println("线程结束!");
        } catch (Exception e) {
          e.printStackTrace();
        }
        super.run();
      }
 
    }.start();

정적 내부 클래스

1. 정적 내부 클래스는 외부 클래스의 정적 메서드 및 변수에만 액세스할 수 있으며 비정적 클래스에는 액세스할 수 없습니다.

2. 외부 클래스에 대한 참조를 생성하지 않고도 정적 내부 클래스를 직접 생성할 수 있습니다.

다음은 내부 클래스의 구현 기술을 소개합니다


읽어 주셔서 감사합니다. 모든 사람에게 도움이 되기를 바랍니다. 이 사이트를 지원해 주셔서 감사합니다!

for (int i = 0; i < 5; i++) {
      final int finali = i;
      new Thread() {
        public void run() {
          System.out.println(finali);
        };
      }.start();
 
    }
Java 내부 클래스(익명 클래스, 익명 객체, 정적 내부 클래스) 및 관련 글에 대한 자세한 설명과 예시는 PHP 중국어 홈페이지를 참고해주세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.