作者LPH66 (1597463007)
看板java
标题Re: [问题] 不太懂怎麽把母class转型成子class
时间Sun Nov 23 15:24:27 2014
你要问的应该是所谓的 downcast
Java 语法上使用一般的 cast 即可 (就是前面摆一对括号里面放型态)
不过当来源跟目标都是 reference 型态且这两种型态间没有上下继承关系的话
javac 会 compile error 告诉你无论如何这都转不过去
如果是 upcast (转成父类别) 那什麽事都没有
(事实上 upcast 可以隐式进行, 这也是你已经在程式里做过的)
downcast 时编译会过, 但如果实际上转不过去的话会扔 ClassCastException 出来
所以你其实只需要用普通的 cast 语法即可
如果要写的小心一点就外面包个 try/catch 接 ClassCastException 处理错误状况
要不然就是用 instanceof 先检查那确实是你要的类别再转
--
'You've sort of made up for it tonight,' said Harry. 'Getting the
sword. Finishing the Horcrux. Saving my life.'
'That makes me sound a lot cooler then I was,' Ron mumbled.
'Stuff like that always sounds cooler then it really was,' said
Harry. 'I've been trying to tell you that for years.'
-- Harry Potter and the Deathly Hollows, P.308
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 123.195.39.85
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/java/M.1416727469.A.725.html
※ 编辑: LPH66 (123.195.39.85), 11/23/2014 15:24:56
1F:→ wtchen: 感谢说明,已经解决了,我想我不应该用继承, 11/23 19:31
2F:→ wtchen: 把母class内建到另一个class才是正确作法。 11/23 19:31
3F:→ LPH66: 那这就是「继承vs合成」的老问题了 XD 11/25 00:55