[問題] 請教向上/向下轉型的問題
各位學長好
我在看深入淺出C#的時候有一個疑問
第一版(買的時候沒注意...)
P267、P268的部分有談到向上、向下轉型
就我個人的理解
例如父類有A方法,子類有B、C方法
向上轉型:
將子類別的物件內容等同於父類
父類名 物件1 = new 子類名();
原本子類物件可以使用A、B、C方法
向上轉型後的物件1就只能使用父類的A方法
向下轉型:
將向上轉型的物件,用一個新物件再轉回來
上面的子類物件現在只能用A方法
那我再用一個物件讓他轉回來(???)
子類名 物件2 = 物件1 as 子類名;
這樣物件2就能使用A、B、C三種方法
在這裡我就有問題了
為什麼要這樣向上向下轉型?
如果直接new一個新的父類物件
效果不就等同向上轉型後的物件嗎?
如果直接new一個新的子類物件
效果不就等同向下轉型後的物件嗎?
有什麼情況非得要用向上、向下轉型不可呢?
請各位學長不吝指教,感謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.125.120.238 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1574328676.A.449.html
推
11/21 18:21,
5年前
, 1F
11/21 18:21, 1F
→
11/21 18:21,
5年前
, 2F
11/21 18:21, 2F
→
11/21 18:21,
5年前
, 3F
11/21 18:21, 3F
推
11/21 18:26,
5年前
, 4F
11/21 18:26, 4F
→
11/21 18:27,
5年前
, 5F
11/21 18:27, 5F
感謝S大的標籤紙說明讓我多了些想法
我又再研究了一下:
父類別 物件1 = new 子類別();
這樣會產生一個名為 物件1 實體
之後再
子類別 物件2 = 物件1 as 子類別;
在這裡 物件2 其實就是 物件1
只是貼上了 物件2 的標籤
於是就產生出和 物件1 相同內容的 物件2
但差別 物件2 可以使用子類別方法
因為他已經被貼上子類的標籤
同時,如果用 物件2 去改變子類的屬性時
物件1 也會受到影響,因為是同一個實體
這樣的理解正確嗎?
推
11/21 18:31,
5年前
, 6F
11/21 18:31, 6F
推
11/21 18:40,
5年前
, 7F
11/21 18:40, 7F
→
11/21 18:40,
5年前
, 8F
11/21 18:40, 8F
→
11/21 18:40,
5年前
, 9F
11/21 18:40, 9F
→
11/21 18:40,
5年前
, 10F
11/21 18:40, 10F
→
11/21 22:45,
5年前
, 11F
11/21 22:45, 11F
推
11/21 23:18,
5年前
, 12F
11/21 23:18, 12F
→
11/22 00:33,
5年前
, 13F
11/22 00:33, 13F
→
11/22 00:33,
5年前
, 14F
11/22 00:33, 14F
→
11/22 00:34,
5年前
, 15F
11/22 00:34, 15F
→
11/22 00:34,
5年前
, 16F
11/22 00:34, 16F
推
11/22 09:15,
5年前
, 17F
11/22 09:15, 17F
感謝各位學長的回答
大概是因為我還沒開始寫很長的程式
所以還搞不太懂上下轉型的重要性
目前看起來是要節省寫程式時的麻煩
還有增加閱讀性?
※ 編輯: berice152233 (59.125.120.238 臺灣), 11/22/2019 10:08:47
→
11/22 09:22,
5年前
, 18F
11/22 09:22, 18F
→
11/22 09:22,
5年前
, 19F
11/22 09:22, 19F
→
11/22 09:23,
5年前
, 20F
11/22 09:23, 20F
→
11/22 09:23,
5年前
, 21F
11/22 09:23, 21F
推
11/22 09:27,
5年前
, 22F
11/22 09:27, 22F
→
11/22 09:28,
5年前
, 23F
11/22 09:28, 23F
推
11/22 09:31,
5年前
, 24F
11/22 09:31, 24F
→
11/22 09:33,
5年前
, 25F
11/22 09:33, 25F
→
11/22 09:33,
5年前
, 26F
11/22 09:33, 26F
推
11/22 09:36,
5年前
, 27F
11/22 09:36, 27F
→
11/22 09:36,
5年前
, 28F
11/22 09:36, 28F
推
11/22 09:40,
5年前
, 29F
11/22 09:40, 29F
→
11/22 09:42,
5年前
, 30F
11/22 09:42, 30F
→
11/22 09:42,
5年前
, 31F
11/22 09:42, 31F
→
11/22 09:42,
5年前
, 32F
11/22 09:42, 32F
感謝L大的說明,這個例子也很好懂
稍微能對as的應用有具體的想像了
※ 編輯: berice152233 (59.125.120.238 臺灣), 11/22/2019 10:12:08
推
11/22 10:55,
5年前
, 33F
11/22 10:55, 33F
→
11/22 10:55,
5年前
, 34F
11/22 10:55, 34F
→
11/22 10:55,
5年前
, 35F
11/22 10:55, 35F
對,我也是看了你的說明之後往前翻
就有種恍然大悟的感覺,哈哈
→
11/22 10:55,
5年前
, 36F
11/22 10:55, 36F
→
11/22 10:55,
5年前
, 37F
11/22 10:55, 37F
→
11/22 10:55,
5年前
, 38F
11/22 10:55, 38F
那我就期待看到這邊了
※ 編輯: berice152233 (59.125.120.238 臺灣), 11/22/2019 11:15:53
推
11/24 09:36,
5年前
, 39F
11/24 09:36, 39F
→
11/24 09:37,
5年前
, 40F
11/24 09:37, 40F
→
11/24 09:37,
5年前
, 41F
11/24 09:37, 41F
推
11/24 09:40,
5年前
, 42F
11/24 09:40, 42F
→
11/24 09:40,
5年前
, 43F
11/24 09:40, 43F
推
11/24 09:54,
5年前
, 44F
11/24 09:54, 44F
→
11/24 09:54,
5年前
, 45F
11/24 09:54, 45F
→
11/24 09:54,
5年前
, 46F
11/24 09:54, 46F
→
11/24 09:54,
5年前
, 47F
11/24 09:54, 47F
→
11/24 09:59,
5年前
, 48F
11/24 09:59, 48F
→
11/24 09:59,
5年前
, 49F
11/24 09:59, 49F
阿...原來是貼上父類標籤的子類實體
經你這麼一說我對於實體的概念不太明確
感謝解說
※ 編輯: berice152233 (59.125.120.238 臺灣), 11/26/2019 13:19:06
推
12/06 17:07,
5年前
, 50F
12/06 17:07, 50F
C_Sharp 近期熱門文章
PTT數位生活區 即時熱門文章