当方法名相同时,通过隐藏方法,派生类对象只能调用未隐藏的方法。
用法:通过new关键字修饰方法
个人理解:通过方法的隐藏,可以避免继承类同名方法产生二义性

**

  1. using UnityEngine;
  2. using System.Collections;
  3. public class Humanoid
  4. {
  5. //Yell 方法的基版本
  6. public void Yell()
  7. {
  8. Debug.Log ("Humanoid version of the Yell() method");
  9. }
  10. }

Enemy 类

  1. using UnityEngine;
  2. using System.Collections;
  3. public class Enemy : Humanoid
  4. {
  5. //这会隐藏 Humanoid 版本。
  6. new public void Yell()
  7. {
  8. Debug.Log ("Enemy version of the Yell() method");
  9. }
  10. }

Orc 类

  1. using UnityEngine;
  2. using System.Collections;
  3. public class Orc : Enemy
  4. {
  5. //这会隐藏 Enemy 版本。
  6. new public void Yell()
  7. {
  8. Debug.Log ("Orc version of the Yell() method");
  9. }
  10. }

WarBand 类

  1. using UnityEngine;
  2. using System.Collections;
  3. public class WarBand : MonoBehaviour
  4. {
  5. void Start ()
  6. {
  7. Humanoid human = new Humanoid();
  8. Humanoid enemy = new Enemy();
  9. Humanoid orc = new Orc();
  10. //注意每个 Humanoid 变量如何包含
  11. //对继承层级视图中
  12. //不同类的引用,但每个变量都
  13. //调用 Humanoid Yell() 方法。
  14. human.Yell();
  15. enemy.Yell();
  16. orc.Yell();
  17. }
  18. }


image.png