我要说明的一点是:强制转换不是万能的。
我先帮你分析一下:dispose()方法是window类的成员方法,window类继承了Container类,并实现了Accessible接口。Container类继承了component类。简单一点说就是:component类是Container类的爸爸,window类是Container的儿子。dispose()是儿子的方法。由于继承关系的存在,window既有自己的特有方法,也有从Container,component继承过来的方法。儿子有的东西,爸爸不一定有,爸爸有的东西儿子一定有。这就是继承。
再看你自己的写这个例子:(Window)(e.getComponent()).dispose();
e.getComponent()返回的是一个component对象,然后在调用component的dispose方法。把这个dispose方法强制转换成一个window类,你感觉可以吗?方法能强制转成类吗?
你这样写的目的是将e.getComponent返回的component对象转成window对象然后再调用dispose方法!
1,想法不可行,子类对象不能强制转换成父类对象。window类中没有dispose()方法。
2,写法也是错的,要明白算数运算符的优先级和执行顺序问题。这种写法不会先转类型在取对象。 |