C# 多重overide
生活随笔
收集整理的這篇文章主要介紹了
C# 多重overide
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
overide 是覆蓋的意思,用在且僅用在虛函數上,虛函數可以是virtual或abstract修飾的,或者是overide修飾的。
文檔大概是這么說的。
由此知道,由overide修飾的函數都是虛函數,不需要再使用virtual修飾了(語法上也不允許了),子類也可以使用overide來實現動態綁定。
new則是直接屏蔽掉父類的同名函數,不能實現動態綁定。new可以用在虛函數或一般函數上,一般用在虛函數上。
子類實現一個與父類虛函數的函數簽名完全相同的函數時,要么指定new,要么指定override修飾,以明確實現的目的。override表示該函數是一個虛函數,可以被子類覆蓋, new表示該函數只是一個普通函數,不能被子類覆蓋。
using UnityEngine; using System.Collections;class CBase {public virtual void PrintName (){Debug.Log ("CBase-----");}public void test (){Debug.Log ("CBase-test-----");} }class CSon:CBase {public override void PrintName (){Debug.Log ("CSon-----");}public new void test (){Debug.Log ("CSon-test-----");} }class CGrandSon1:CSon {public void PrintName (){Debug.Log ("CGrandSon1-----");}public new void test (){Debug.Log ("CGrandSon1-test-----");} }class CGrandSon2:CSon {public override void PrintName (){Debug.Log ("CGrandSon2-----");} }public class testVirtualFunc : MonoBehaviour {// Use this for initializationvoid Start (){CSon os1 = new CGrandSon1 ();os1.PrintName (); //CSon-----os1.test (); //CSon-test-----CSon os2 = new CGrandSon2 ();os2.PrintName (); //CGrandSon2----- }// Update is called once per framevoid Update (){} }?
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的C# 多重overide的全部內容,希望文章能夠幫你解決所遇到的問題。