new void 是代表隐藏父类中的同名方法,用法类似 virtual 和 override,如下所示,Test方法和TT方法作用相同:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| using System.Collections; using System.Collections.Generic; using UnityEngine;
public class Test : MonoBehaviour { void Start() { BB b = new BB(); b.Test(); b.TT(); } }
class AA { public void Test() { Debug.Log("AA.Test()"); }
public virtual void TT() { Debug.Log("AA.TT()"); } }
class BB : AA { public new void Test() { Debug.Log("BB.Test()"); }
public override void TT() { Debug.Log("BB.TT()"); } }
|
输出:
BB 中的 Test 如果不加 new 会报如下错误:
| 'BB.Test()' hides inherited member 'AA.Test()'. Use the new keyword if hiding was intended.
|