以下のコードについて混乱しています。このコードは他の誰かによって書かれており、私は現在、Java でパラメーターの受け渡しがどのように機能するかをより理解するためにコードを研究しています。
コード#1
addKeyListener((KeyListener)new TAdapter());
およびコード#2
addKeyListener(new TAdapter());
TAdapter が KeyAdapter クラスを拡張したクラスであると仮定して、同じことを意味し、同じことを実行しますか? また、Eclipse で読んだメソッドの説明から、メソッドが KeyListener オブジェクトを受け取る場合でも、必ずしも TAdapter オブジェクトを KeyListener として明示的にキャストする必要がないことに気付きました。なぜこれが可能なのですか?Java docs から KeyAdapter クラスを簡単に検索したところ、KeyAdapter クラスは KeyListener インターフェイスを実装しているようです。では、パラメータの受け渡しで Java が機能する方法の 1 つは、メソッドの説明にリストされている同じ名前のインターフェースを実装する特定のクラスから継承するクラスのインスタンスをメソッドが受け入れることができるということであると想定しても安全でしょうか? もしそうなら、なぜこれも可能ですか?
PS 余談ですが、プログラマーがクラス TAdapter に名前を付ける理由がわかりません。T は何の略ですか? 他のソース コードでもこのタイプのクラス命名に気付きましたが、この想定される規則を理解していませんでした。