English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Java 基礎教程

Java フロー制御

Java 配列

Java 面向オブジェクト(I)

Java 面向オブジェクト(II)

Java 面向オブジェクト(III)

Java 異常処理

Java List(リスト)

Java Queue(キュー)

Java Mapコレクション

Java Setコレクション

Java入出力(I/O)

Java Reader/Writer

Javaの他のトピック

Java 匿名クラス

このチュートリアルでは、サンプルを用いてJavaの匿名クラスを学びます。

Javaでは、クラスがネストされたクラスを含むことができます。名前を提供しない場合にネストされたクラスを作成できます。

名前のないネストされたクラスは匿名クラスと呼ばれます。

匿名クラスを定義するには、別のクラス内で定義する必要があります。したがって、これは匿名内部クラスとも呼ばれます。その構文は次の通りです:

class outerClass {
    //匿名クラスを定義
    object1 = new Type(parameterList) {
         //匿名クラスの主体
    };
};

匿名クラスは通常、サブクラスを継承したりインターフェースを実装します。

ここでは、タイプ可以是

  1. 匿名クラスが継承するスーパークラス

  2. 匿名クラスが実装するインターフェース

上記のコードは実行時に匿名クラスのオブジェクトobjectを作成します。1。

注意:匿名クラスは式内で定義されます。したがって、匿名クラスの末尾には分号を使用して式の終わりを示します。

例1:クラスを継承する匿名内部クラス

class Polygon {
   public void display() {
      System.out.println("Polygonクラス内");
   };
};
class AnonymousDemo {
   public void createClass() {
      //匿名クラスを生成し、クラスPolygonを継承
      Polygon p1 = new Polygon() {
         public void display() {
            System.out.println("匿名クラスの内部。");
         };
      };
      p1.display();
   };
};
class Main {
   public static void main(String[] args) {
       AnonymousDemo an = new AnonymousDemo();
       an.createClass();
   };
};

出力結果

匿名クラスの内部

上記の例では、クラスPolygonが作成されました。このクラスにはdisplay()メソッドが1つしかありません。

その後、匿名クラスが作成されました。このクラスはPolygonを継承し、display()メソッドをオーバーライドしています。

このプログラムを実行するとき、匿名クラスのオブジェクトpが作成されます。1。その後、そのオブジェクトが匿名クラスのdisplay()メソッドを呼び出します。

例2インターフェースを実装する匿名クラス

interface Polygon {
   public void display();
};
class AnonymousDemo {
   public void createClass() {
      //インターフェースを実装する匿名クラス
      Polygon p1 = new Polygon() {
         public void display() {
            System.out.println("匿名クラスの内部。");
         };
      };
      p1.display();
   };
};
class Main {
   public static void main(String[] args) {
      AnonymousDemo an = new AnonymousDemo();
      an.createClass();
   };
};

出力結果

匿名クラスの内部

上記の例では、Polygonインターフェースを実装する匿名クラスを作成しました。

匿名クラスの利点

匿名クラスでは、必要に応じてオブジェクトを作成します。つまり、特定のタスクを実行するためにオブジェクトを作成します。例えば、

Object = new Example() {
   public void display() {
      System.out.println("匿名クラスがdisplay()メソッドをオーバーライドします。");
   };
};

ここでは、display()メソッドをオーバーライドする必要がある場合、匿名クラスのオブジェクトが動的に作成されます。

匿名クラスもコードを簡潔にするのに役立ちます。