为什么可以将JFrame转换为JPanel?

Nic*_*las 3 java polymorphism inheritance casting interface

这是一个例子:

// set up frame, panel
JFrame container = new JFrame("Game Example");
panel = (JPanel)container.getContentPane();
Run Code Online (Sandbox Code Playgroud)

我检查了Java API,并且两个类都实现了相同的接口,这和多态性是为什么?

还是因为两个类都通过继承从Component类继承?

Hov*_*els 5

这是contentPane通常一个JPanel。打印出对象的类名,然后自己查看。

System.out.println(container.getContentPane().getClass().getName());
Run Code Online (Sandbox Code Playgroud)

并请注意,您实际上并不是 “将JFrame转换为JPanel”。JFrame的contentPane不是JFrame本身,不是很难。