[問題] 父類別使用子類別定義的方法

看板AndroidDev作者 (阿東)時間4年前 (2020/09/14 11:41), 編輯推噓1(106)
留言7則, 2人參與, 4年前最新討論串1/1
各位版友好, 發現有一種寫法如下, 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://www.ptt.cc/bbs/AndroidDev/M.1600054870.A.2E6.html

09/14 11:46, 4年前 , 1F
你有跑過? 這會ClassCastException
09/14 11:46, 1F

09/14 11:46, 4年前 , 2F
father不是Child,不能cast成Child
09/14 11:46, 2F

09/14 13:10, 4年前 , 3F
名詞叫做 downcast, 不過如樓上所說要真的參照子類別才能轉
09/14 13:10, 3F

09/14 13:12, 4年前 , 4F
用途基本上是有時你一開始拿到的只能是父類別參照
09/14 13:12, 4F

09/14 13:13, 4年前 , 5F
但你能夠確定 (不論透過設計或是透過 instanceof)
09/14 13:13, 5F

09/14 13:13, 4年前 , 6F
它其實參照到某一個子類別, 那你就能轉成子類別參照
09/14 13:13, 6F

09/14 13:13, 4年前 , 7F
進而運用子類別才有的成員
09/14 13:13, 7F
文章代碼(AID): #1VNkPMBc (AndroidDev)
文章代碼(AID): #1VNkPMBc (AndroidDev)