通过虚方法实现方法重写-多态
生活随笔
收集整理的這篇文章主要介紹了
通过虚方法实现方法重写-多态
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
方法表:
方法槽:
在一個(gè)類里邊可能有一些成員和一些方法,一個(gè)類里有專門的地址,記錄方法表的地址,根據(jù)方法表找到方法 當(dāng)子類繼承了父類以后,會(huì)拿到父類的方法表,有一個(gè)方法槽。
當(dāng)子類重寫父類的方法以后,子類重寫了一份父類的方法。如果重寫了,會(huì)從槽里找重寫后的方法,this點(diǎn)方法,指向重寫后的方法,base點(diǎn)方法,調(diào)用的是父類的方法。
雖然是子類如果沒有重寫,依然還是調(diào)用父類的方法。
public class Person{public int Id { get; set; }public string Name { get; set; }public virtual void sayHi(){Console.WriteLine("地球人");}}public class Chinese : Person{public override void sayHi(){Console.WriteLine("中國");}}public class America : Person{public override void sayHi(){Console.WriteLine("美國");}}
方法槽:
在一個(gè)類里邊可能有一些成員和一些方法,一個(gè)類里有專門的地址,記錄方法表的地址,根據(jù)方法表找到方法 當(dāng)子類繼承了父類以后,會(huì)拿到父類的方法表,有一個(gè)方法槽。
當(dāng)子類重寫父類的方法以后,子類重寫了一份父類的方法。如果重寫了,會(huì)從槽里找重寫后的方法,this點(diǎn)方法,指向重寫后的方法,base點(diǎn)方法,調(diào)用的是父類的方法。
雖然是子類如果沒有重寫,依然還是調(diào)用父類的方法。
public class Person{public int Id { get; set; }public string Name { get; set; }public virtual void sayHi(){Console.WriteLine("地球人");}}public class Chinese : Person{public override void sayHi(){Console.WriteLine("中國");}}public class America : Person{public override void sayHi(){Console.WriteLine("美國");}}
?
轉(zhuǎn)載于:https://www.cnblogs.com/xiaoyueryeah/p/8427954.html
總結(jié)
以上是生活随笔為你收集整理的通过虚方法实现方法重写-多态的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 楚留香手游攻略
- 下一篇: TFBOYS饭票上线引热议,骗局之外,区