java - 为什么可以将 JFrame 强制转换为 JPanel?

标签 java inheritance interface casting polymorphism

举个例子:

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

我检查了 Java API,这两个类都实现了相同的接口(interface),那么这是多态性的原因吗?

还是因为这两个类都是通过继承从Component类继承而来的?

最佳答案

就是 contentPane 通常 JPanel。打印出对象的类名并亲自查看。

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

请注意,您实际上不是“将 JFrame 类型转换为 JPanel”。 JFrame 的 contentPane 不是 JFrame 本身,几乎不是。

关于java - 为什么可以将 JFrame 强制转换为 JPanel?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14349101/

相关文章:

java - 将 Base64 字符串保存到文件

javascript - node.js EventEmitter 和 iife 模式

python - Django 管理员。以相同的形式创建父级和子级

typescript - 类型 'string' 的索引签名在类型 'Object' .ts(2322) 中丢失

TypeScript 扩展接口(interface)/类型的所有值类型

java - 带条件的Spring文件配置

java - 从 SD 卡中删除文件夹

java - 为什么我的 equals 方法不起作用?

c# - C#中通过抽象类显式实现属性

c# - 使用委托(delegate)或接口(interface)来分离日志记录 - 最佳实践 - C#