多态、虚方法、重写
多態(tài):
同樣都是繼承了同一個父類,但是父類中的方法并不使用任何一個子類,那么在這就需要子類重新編寫這個方法的主體
1、需要父類同意子類可以重新編寫自己的方法,virtual - 虛方法
2、子類只能重寫父類允許重寫的方法,只能重寫虛方法,override - 重寫覆蓋虛方法
所有的類都可以當(dāng)做父類,都可以有虛方法
Program ? 類
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace 多態(tài)_虛方法_重寫 {class Program{static void Main(string[] args){bird b = new bird();plane p = new plane();Console.WriteLine(b.flying());Console.WriteLine(p.flying());Class1 c = new Class1();Console.WriteLine(c.flying());Console.WriteLine(c.eat());Console.ReadLine();}} }fly ? 類
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace 多態(tài)_虛方法_重寫 {public class fly{//public string flying()//這樣寫的父類被子類繼承后有可能不符合所有子類各自的特性,所以要改成虛擬的//{// return "我會飛行!";//}public virtual string flying()//在public后面加上virtual就變成虛擬的,如果不符合個別子類的特性,可以再子類里面進行重寫 {return "我會飛行!";}public virtual string head(){return "我有頭!";}public virtual string wing(){return "我有翅膀!";}} }bird ? 類
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace 多態(tài)_虛方法_重寫 {public class bird:fly{public override string flying()//override是重寫覆蓋,打出來后自動提示需要更改的內(nèi)容,回車自動顯示,然后把ruturn的內(nèi)容改成其他內(nèi)容即可 {return "我拍拍翅膀就能飛!";}public virtual string eat()//自己獨有的特性也可以被寫成虛方法,它派生的類繼承后也可以進行重寫 {return "我吃小米!";}} }plan ? 類
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace 多態(tài)_虛方法_重寫 {class plane:fly{public override string flying(){return "我噴火就能飛!";}} }class1 ? 類
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace 多態(tài)_虛方法_重寫 {public class Class1 : bird//Class1繼承bird這個子類為父類,那么Class1也可以在里面繼續(xù)重寫,最頂端的虛方法可以被下面的派生類無限重寫 {public override string flying(){return "我不拍翅膀也能飛!";}public override string eat(){return "我吃小米,也吃沙子!";}} }?
轉(zhuǎn)載于:https://www.cnblogs.com/juyangchao12/p/5859535.html
總結(jié)
- 上一篇: 关于编译原理的一点看法
- 下一篇: android 实现模拟加载中的程序