作者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/cn.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