Java의 익명 내부 클래스는 내부 클래스 또는 중첩 클래스입니다. 내부 클래스는 외부 클래스 내부에 존재하는 클래스입니다. 따라서 익명 내부 클래스는 이름이 없는 내부 클래스입니다. 이는 클래스의 하위 클래스이거나 인터페이스의 구현입니다. 따라서 클래스나 인터페이스 메서드를 재정의해야 하는 경우 익명 내부 클래스를 사용할 수 있습니다. 익명 내부 클래스의 경우 중괄호 뒤에 세미콜론이 옵니다.
무료 소프트웨어 개발 과정 시작
웹 개발, 프로그래밍 언어, 소프트웨어 테스팅 등
익명 내부 클래스를 만드는 방법에는 두 가지가 있습니다.
구문:
다음은 클래스가 추상 클래스이거나 구체적인 클래스 또는 인터페이스일 수 있는 구문입니다.
class t = new class() { // class variables and methods members public void class_method() { /* some code of the class_method */ } };
다음은 언급된 예입니다.
인터페이스와 해당 인터페이스를 구현하는 간단한 클래스를 생성하는 예
코드:
package p1; interface Emp { int eid = 2101; void geteid(); } // Implclass implement an Emp Interface and provide the defination for geteid() method class ImplClass implements Emp { @Override public void geteid() { // display the eid System.out.print("Employee id is "+eid); } } class Demo { public static void main( String[] arg ) { // create object of Implclass which implements Emp interface ImplClass ob=new ImplClass(); // call geteid() method which implemented by Implclass ob.geteid(); } }
출력:
위 코드와 마찬가지로 geteid() 메소드와 eid=2101을 사용하여 Emp 인터페이스가 생성됩니다. ImplClass는 Emp 인터페이스를 구현하고 geteid() 메소드에 대한 정의를 제공합니다. 별도의 클래스 ImplClass를 작성할 필요가 없습니다. 대신 익명의 내부 클래스로 사용할 수 있습니다.
여기에서는 위의 자바 코드를 다시 작성하여 내부 클래스가 작동하는지 확인합니다. ImplClass 클래스는 애플리케이션의 다른 클래스에 액세스할 수 있습니다. 그러나 ImplClass 클래스의 기능은 애플리케이션의 다른 클래스에 필요하지 않습니다. 따라서 외부 클래스를 정의할 필요가 없습니다. 또한 이 클래스의 인스턴스는 한 번만 사용됩니다. 따라서 익명 내부 클래스의 도움으로 ImplClass 클래스의 기능을 구현할 수 있습니다. 아래 예시에서는 Empinterfece를 구현하여 직접 클래스의 객체를 생성했습니다.
코드:
package p1; interface Emp { int eid = 2101; void geteid(); } class Demo { public static void main( String[] arg ) { // Implclass is hidden inner class implement an Emp Interface // Implclass class name is not created but an object is creating below Emp ob = new Emp() { @Override public void geteid() { // display the eid System.out.print("Employee id is "+eid); } }; // call geteid() method which implemented by Implclass ob.geteid(); } }
출력:
위 코드와 마찬가지로 Emp 객체가 생성되지 않습니다. 암시적으로 ImplClass(동일한 이름이 아닐 수 있음) 클래스의 객체가 생성됩니다. 내부 클래스에는 이름이 없으므로 컴파일러가 이름을 결정하고 생성하여 Emp 인터페이스를 구현합니다.
클래스를 확장하는 익명 내부 클래스를 생성하는 Java 코드
코드:
package p1; class Emp { void dispMesg() { System.out.println("This message is from main class"); } } class Demo { public static void main( String[] arg ) { // Anonymous hidden inner class extends an Emp class // Anonymous class name is not created but an object is creating below Emp ob = new Emp() { @Override // override dispMesg() method in child Anonymous inner class public void dispMesg() { System.out.print("This message is from child class"); } }; // call geteid() method which implemented by Implclass ob.dispMesg(); } }
출력:
추상 클래스를 확장하는 익명 내부 클래스를 생성하는 Java 코드
코드:
package p1; abstract class Emp { void dispMesg() { System.out.println("This message is from main class"); } abstract void abstrct_method(); } class Demo { public static void main( String[] arg ) { // Anonymous hidden inner class extends an Emp abstract class // Anonymous class name is not created but an object is creating below Emp ob = new Emp() { @Override public void dispMesg() { System.out.println("This message is from child class"); } @Override void abstrct_method() { System.out.println("Abstract Method"); } }; ob.dispMesg(); ob.abstrct_method(); } }
출력:
미리 정의된 Thread 클래스와 실행 가능한 인터페이스를 사용하여 스레드를 생성하고 실행할 내부 생성자 또는 메소드 인수를 정의하는 익명 Inner 클래스를 생성하는 Java 코드입니다.
코드:
package p1; class Demo { public static void main( String[] arg ) { // Anonymous hidden inner class extends an Emp class // Anonymous class define constructor argument Thread obt = new Thread(new Runnable() { @Override public void run() { System.out.println("Runing child Thread."); } }); System.out.println("Runing main Thread."); obt.start(); System.out.println("Runing main Thread."); } }
출력:
익명 내부 클래스는 클래스 이름이 없는 내부 클래스입니다. 익명 내부 클래스를 생성하는 방법에는 구상 클래스 확장, 추상 클래스 확장, 인터페이스 구현 등 다양한 방법이 있습니다.
위 내용은 Java의 익명 내부 클래스의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!