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显然,除了扩展两者之外,还要注意extend Object

于 2013-01-15T23:52:27.393 回答