作者wwe90425 (撒尿牛丸)
看板C_Sharp
標題[問題]參考變數的問題
時間Tue Dec 26 20:54:31 2017
假設:
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://webptt.com/m.aspx?n=bbs/C_Sharp/M.1514292876.A.6B9.html
1F:推 testPtt: 通常A用virtual Method給B override 會這樣寫 12/26 21:17
2F:→ ssccg: polymorphism 12/26 21:28
3F:推 brian780405: 1. _a可以用子類別的方法,強制轉型後就可以 12/27 15:48
4F:→ brian780405: 2. 動物有吃這個方法,但吃的方式和內容都不一樣 12/27 15:49
5F:→ brian780405: 一樣的是,肚子餓就會吃東西 12/27 15:49
6F:→ brian780405: 動物 cow = new 牛(); if (cow.肚子餓) { 吃(); } 12/27 15:51
7F:→ brian780405: 動物 wolf = new 狼(); if (wolf.肚子餓) { 吃(); } 12/27 15:51
8F:推 name2name2: 找本 深入淺出設計模式 讀一下 12/28 23:05