(JPanel) this.getContentPane() 父类可以强转成子类吗??

J2EE 码拜 10年前 (2015-04-23) 1130次浏览 0个评论
 

如题,父类怎么可以强转成子类啊???
((JPanel) this.getContentPane()).setOpaque(false);
其中this是一个继承自JFrame的对象、、、

(JPanel) this.getContentPane() 父类可以强转成子类吗??
没人啊—————————————————————
(JPanel) this.getContentPane() 父类可以强转成子类吗??
40分
父类可以强转成子类
Map和HashMap就经常转来转去的,具体运行的效果,要程序员自己确保

((JPanel) this.getContentPane()).setOpaque(false);这句拆开来读

this是一个继承自JFrame的对象,没有问题
this.getContentPane()查API文档,可以知道返回的是非常通用的Container【挺像Map的感觉】
Container里并没有定义setOpaque这个方法,所以不强制类型转换是通不过编译的

(JPanel) this.getContentPane()把Container强制类型转换为JPanel,还得用括号包起来以区分运算优先级
JPanel的对象就可以调用setOpaque方法了

那么问题来了:谁负责确保this.getContentPane()返回的这个通用的Container在运行时刻可以成功的转换为JPanel呢?
应该是JFrame的setContentPane负责做的,要么显示的执行,要么已经确保Java自己会调用,否则动作未定义

(JPanel) this.getContentPane() 父类可以强转成子类吗??
10分
获取父类的引用,需要强制转换成子类引用才能引用子类独有的方法,否则编译器报错找不到该方法

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明(JPanel) this.getContentPane() 父类可以强转成子类吗??
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!