18

私はプログラミングの初心者ですが、学校で Intro CS のクラスを受講したことがあるので、ほとんどの基本を理解しています (または理解していると思っていました)。JOGL を使用して OpenGL を独学しようとしていますが、理解できないコード行に出くわしました。何か不足していますか?

frame.addWindowListener(new WindowAdapter() {
  public void windowClosing(WindowEvent e) {
    System.exit(0);
  }
});
  • Javadocを確認したところWindowAdapter、抽象クラスです。では、彼はどのようにしてそれをインスタンス化できるのでしょうか?

  • それとも、これはインスタンスを作成していますか?

  • コードがメソッドを拡張WindowAdapterまたはオーバーライドしているように見えますwindowClosingが、新しいクラスを作成せずにどうしてそれが可能なのでしょうか?

4

2 に答える 2

8

コンセプトは匿名クラス!! .... WindowAdapter は抽象クラスであるため、それをオブジェクトにすることはできませんが、匿名クラスの概念を使用すると、そのコンストラクターを呼び出したり、その型のオブジェクトに割り当てずに関数を使用したりできます..

抽象クラスのデータ変数とメソッドを使用するもう 1 つの方法は、その派生クラスのオブジェクトを作成することです。

このようにして、エラーなしで WindowAdpater インスタンスをパラメーターに渡すことができます。

于 2013-07-09T05:16:22.157 に答える