>Java >java지도 시간 >Java의 익명 내부 클래스 요약 및 공유

Java의 익명 내부 클래스 요약 및 공유

黄舟
黄舟원래의
2017-09-25 10:16:541634검색

이 글은 자바의 익명 내부 클래스 요약 관련 정보를 주로 소개합니다. 도움이 필요한 친구들이 참고하시면 좋을 것 같습니다.

익명 내부 클래스는 자바의 익명 내부 클래스 요약입니다. 또한 이름이 없는 내부 클래스

이름이 없기 때문에 익명 내부 클래스는 일반적으로 코드 작성을 단순화하는 데 사용됩니다.

그러나 익명 내부 클래스를 사용하려면 전제 조건이 있습니다. 상위 클래스를 상속해야 합니다. 인터페이스 구현

예제 1: 추상 메소드 구현에 익명 내부 클래스를 사용하지 않음


abstract class Person { 
  public abstract void eat(); 
} 
  
class Child extends Person { 
  public void eat() { 
    System.out.println("eat something"); 
  } 
} 
  
public class Demo { 
  public static void main(String[] args) { 
    Person p = new Child(); 
    p.eat(); 
  } 
}

실행 결과:
eat someone

보시다시피 Child를 사용하여 Person 클래스를 상속합니다. 그런 다음 Child 인스턴스를 구현하고 이를 Person 클래스에 대한 참조로 업캐스트합니다

그러나 여기서 Child 클래스가 한 번만 사용된다면 독립 클래스로 작성하는 것이 번거롭지 않을까요?

이번에는 익명 내부 클래스가 도입되었습니다

예제 2: 익명 내부 클래스의 기본 구현

 public abstract void eat(); 
} 
  
public class Demo { 
  public static void main(String[] args) { 
    Person p = new Person() { 
      public void eat() { 
        System.out.println("eat something"); 
      } 
    }; 
    p.eat(); 
  } 
}

실행 결과:
eat Something

보시다시피 추상 클래스 Person을 직접 추가합니다. 메소드는 중괄호로 구현됩니다

이렇게 하면 클래스 작성을 생략할 수 있습니다

또한 익명 내부 클래스를 인터페이스에서 사용할 수도 있습니다

예 3: 인터페이스에서 익명 내부 클래스 사용


interface Person { 
  public void eat(); 
} 
  
public class Demo { 
  public static void main(String[] args) { 
    Person p = new Person() { 
      public void eat() { 
        System.out.println("eat something"); 
      } 
    }; 
    p.eat(); 
  } 
}

실행 결과:
eat Something

위의 예에서 볼 수 있듯이 클래스가 추상이거나 인터페이스인 한 해당 하위 클래스의 메서드는 익명 내부 클래스를 사용하여 구현할 수 있습니다

가장 일반적으로 사용되는 상황 멀티 스레딩 구현에 관한 것입니다. 멀티 스레딩을 구현하려면 Thread 클래스 또는 Runnable 인터페이스를 상속해야 하기 때문입니다

예 4: Thread 클래스의 익명 내부 클래스 구현


public class Demo { 
  public static void main(String[] args) { 
    Thread t = new Thread() { 
      public void run() { 
        for (int i = 1; i <= 5; i++) { 
          System.out.print(i + " "); 
        } 
      } 
    }; 
    t.start(); 
  } 
}

Running 결과:
1 2 3 4 5

예 5: Runnable 인터페이스의 익명 내부 클래스 구현

public class Demo { 
  public static void main(String[] args) { 
    Runnable r = new Runnable() { 
      public void run() { 
        for (int i = 1; i <= 5; i++) { 
          System.out.print(i + " "); 
        } 
      } 
    }; 
    Thread t = new Thread(r); 
    t.start(); 
  } 
}

실행 결과:
1 2 3 4 5

위 내용은 Java의 익명 내부 클래스 요약 및 공유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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