以下是一个例子:
// set up frame, panel
JFrame container = new JFrame("Game Example");
panel = (JPanel)container.getContentPane();
我检查了Java API,这两个类实现了相同的接口,那么多态性的原因是什么?
或者是因为两个类都通过继承从Component类继承?
答案 0 :(得分:4)
这就是contentPane通常 是 一个JPanel。打印出对象的类名,亲眼看看。
System.out.println(container.getContentPane().getClass().getName());
请注意, 不 实际上是“将JFrame强制转换为JPanel”。 JFrame的contentPane不是JFrame本身,不是很难。
答案 1 :(得分:1)
语法隐含的优先顺序是:
panel = (JPanel)(container.getContentPane());
不
panel = ((JPanel)container).getContentPane();
注意,除了扩展Component
之外,显然还要扩展Object
。