这是一个例子:
// 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
显然,除了扩展两者之外,还要注意extend Object
。