作者Dong0129 (阿东)
看板AndroidDev
标题[问题] 父类别使用子类别定义的方法
时间Mon Sep 14 11:41:08 2020
各位版友好,
发现有一种写法如下,
class Father{}
class Child extend Father
{
public void test(){}
}
main()
{
Father father=new father();
((Child)father).test();
}
请问((Child)father).test();用法的名称为何?
这样子呼叫有什麽好处呢?
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 42.72.176.42 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/AndroidDev/M.1600054870.A.2E6.html
1F:→ ssccg: 你有跑过? 这会ClassCastException 09/14 11:46
2F:→ ssccg: father不是Child,不能cast成Child 09/14 11:46
3F:推 LPH66: 名词叫做 downcast, 不过如楼上所说要真的参照子类别才能转 09/14 13:10
4F:→ LPH66: 用途基本上是有时你一开始拿到的只能是父类别参照 09/14 13:12
5F:→ LPH66: 但你能够确定 (不论透过设计或是透过 instanceof) 09/14 13:13
6F:→ LPH66: 它其实参照到某一个子类别, 那你就能转成子类别参照 09/14 13:13
7F:→ LPH66: 进而运用子类别才有的成员 09/14 13:13