ホームページ  >  記事  >  Java  >  Java の匿名内部クラスの概要と共有

Java の匿名内部クラスの概要と共有

黄舟
黄舟オリジナル
2017-09-25 10:16:541542ブラウズ

この記事は、Javaの匿名内部クラスの概要に関する関連情報を主に紹介します。この記事が必要な友人の参考になれば幸いです

Javaの匿名内部クラスの概要

名前のない内部クラスも

名前がないため、匿名内部クラスは通常、コード記述を簡略化するために使用されます

しかし、匿名内部クラスを使用するには、親クラスを継承するか、または継承する必要があります。インターフェイスを実装する

例 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(); 
  } 
}

実行結果: 何かを食べる

ご覧のとおり、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(); 
  } 
}

実行結果: 何か食べる

上記の例からわかるように、クラスが抽象またはインターフェイスである限り、そのサブクラスのメソッドは匿名の内部クラスを使用して実装できます

最も一般的に使用される状況 マルチスレッドの実装についてです。マルチスレッドを実装するには、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(); 
  } 
}

実行結果: 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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。