次に例を示します。
// set up frame, panel
JFrame container = new JFrame("Game Example");
panel = (JPanel)container.getContentPane();
私はJava APIをチェックしましたが、両方のクラスが同じインターフェースを実装しているので、ポリモーフィズムが理由ですか?
それとも、両方のクラスが継承によって Component クラスから継承されているためですか?
次に例を示します。
// set up frame, panel
JFrame container = new JFrame("Game Example");
panel = (JPanel)container.getContentPane();
私はJava APIをチェックしましたが、両方のクラスが同じインターフェースを実装しているので、ポリモーフィズムが理由ですか?
それとも、両方のクラスが継承によって Component クラスから継承されているためですか?
通常、contentPane はJPanelです。オブジェクトのクラス名を出力して、自分の目で確かめてください。
System.out.println(container.getContentPane().getClass().getName());
そして、実際には「JFrame を JPanel に型キャスト」していないことに注意してください。JFrame の contentPane は JFrame 自体ではなく、ほとんどありません。
グラマーによって暗示される優先順位は次のとおりです。
panel = (JPanel)(container.getContentPane());
いいえ
panel = ((JPanel)container).getContentPane();
Component
両方を拡張することに加えて、明らかに拡張することに注意してくださいObject
。