3

次に例を示します。

// set up frame, panel
JFrame container = new JFrame("Game Example");
panel = (JPanel)container.getContentPane();

私はJava APIをチェックしましたが、両方のクラスが同じインターフェースを実装しているので、ポリモーフィズムが理由ですか?

それとも、両方のクラスが継承によって Component クラスから継承されているためですか?

4

2 に答える 2

5

通常、contentPane はJPanelです。オブジェクトのクラス名を出力して、自分の目で確かめてください。

System.out.println(container.getContentPane().getClass().getName());

そして、実際には「JFrame を JPanel に型キャスト」していないことに注意してください。JFrame の contentPane は JFrame 自体ではなく、ほとんどありません。

于 2013-01-15T23:51:10.943 に答える
1

グラマーによって暗示される優先順位は次のとおりです。

panel = (JPanel)(container.getContentPane());

いいえ

panel = ((JPanel)container).getContentPane();

Component両方を拡張することに加えて、明らかに拡張することに注意してくださいObject

于 2013-01-15T23:52:27.393 に答える