C#基础|面向对象之多态
生活随笔
收集整理的這篇文章主要介紹了
C#基础|面向对象之多态
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
什么是多態(tài) 一句話解釋,同一種事物表現(xiàn)出的多種形態(tài)。 看完以后,應(yīng)該還是蒙的,還是看代碼吧。。 現(xiàn)有Person類,Student類,Teacher類 其中Person類是Student和Teacher類的父類。換句話說,Student類和Teacher類都繼承自Person類。 在Person類中有一個SayHi方法,Student和Teacher的SayHi方法肯定是不一樣的。 現(xiàn)要求在一個靜態(tài)方法中,他的形參是Person p,實參可能是Student類或者是Teacher類,在函數(shù)內(nèi)部通過調(diào)用p.SayHi()來達(dá)到調(diào)用其不同子類的不同SayHi方法。 如果實現(xiàn)了上面的要求,可以說就是多態(tài)的實現(xiàn)。 三種方式實現(xiàn)多態(tài) ? 通過虛方法 ? //person類,父類 class Person { public virtual void SayHi() { Console.WriteLine(“我是Person類中的SayHi方法”); } } //student類,子類 class Student : Person { public override void SayHi() { Console.WriteLine(“我是Student類中的SayHi方法”); } } //Teacher類,子類 class Teacher : Person { public override void SayHi() { Console.WriteLine(“我是Teacher類中的SayHi方法”); } } ? 通過抽象類 ? //person類,父類 abstract class Person { public abstractvoid SayHi(); } //student類,子類 class Student : Person { public override void SayHi() { Console.WriteLine(“我是Student類中的SayHi方法”); } } ? //teacher這里就不寫出來了 ? 通過接口 public interface IPerson { void SayHi(); } class Student : IPerson { public void SayHi() { Console.WriteLine(“我是Student類中的SayHi方法”); } } 通過虛方法實現(xiàn)多態(tài)的完整代碼 ? using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 多態(tài)的實現(xiàn) { class Program { static void Main(string[] args) { Student stu = new Student(); Teacher tea = new Teacher(); Fun(stu); Fun(tea); Console.ReadKey(); } static void Fun(Person p) { p.SayHi(); } } class Person { public virtual void SayHi() { Console.WriteLine("我是Person類中的SayHi方法"); } } class Student : Person { public override void SayHi() { Console.WriteLine("我是Student類中的SayHi方法"); } } class Teacher : Person { public override void SayHi() { Console.WriteLine("我是Teacher類中的SayHi方法"); } } } 運(yùn)行結(jié)果 我是Student類中的SayHi方法 我是Teacher類中的SayHi方法 ? ? 結(jié)束語 寫這篇隨筆的目的是出于鍛煉自己的表達(dá)能力和思維邏輯能力的,若給你后面的學(xué)習(xí)帶來誤解請諒解。 感謝博客園 感謝黑馬訓(xùn)練營 2014/1/17 15:00
?
轉(zhuǎn)載于:https://www.cnblogs.com/icez/p/3528665.html
總結(jié)
以上是生活随笔為你收集整理的C#基础|面向对象之多态的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器学习之微积分零基础学习
- 下一篇: 转:c#委托事件实现窗体传值通信