[問題]參考變數的問題

看板C_Sharp作者 (撒尿牛丸)時間6年前 (2017/12/26 20:54), 編輯推噓3(305)
留言8則, 4人參與, 6年前最新討論串1/2 (看更多)
假設: class A{ } class B:A{ public B{} public MethodB_1{} } 假設有兩個類別A&B B繼承自A 請問: A _a = new B() 這樣宣告有什麼用途嗎? 今天有做過實驗 宣告完後 _a也無法用子類別的方法(但還是會執行B的建構子) 那幹嘛不直接宣告 A _a = new A -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.250.153.177 ※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1514292876.A.6B9.html

12/26 21:17, 6年前 , 1F
通常A用virtual Method給B override 會這樣寫
12/26 21:17, 1F

12/26 21:28, 6年前 , 2F
polymorphism
12/26 21:28, 2F

12/27 15:48, 6年前 , 3F
1. _a可以用子類別的方法,強制轉型後就可以
12/27 15:48, 3F

12/27 15:49, 6年前 , 4F
2. 動物有吃這個方法,但吃的方式和內容都不一樣
12/27 15:49, 4F

12/27 15:49, 6年前 , 5F
一樣的是,肚子餓就會吃東西
12/27 15:49, 5F

12/27 15:51, 6年前 , 6F
動物 cow = new 牛(); if (cow.肚子餓) { 吃(); }
12/27 15:51, 6F

12/27 15:51, 6年前 , 7F
動物 wolf = new 狼(); if (wolf.肚子餓) { 吃(); }
12/27 15:51, 7F

12/28 23:05, 6年前 , 8F
找本 深入淺出設計模式 讀一下
12/28 23:05, 8F
文章代碼(AID): #1QGaQCQv (C_Sharp)
文章代碼(AID): #1QGaQCQv (C_Sharp)