无法理解隐藏的具体方法 'behind the scenes'

cannot understand what method hiding exactly do 'behind the scenes'

我很难确切地理解方法隐藏的作用。 有人可以向我解释一下 'behind the scenes' 在使用方法隐藏时发生了什么吗?

    class Base
   {
      public virtual void OverrideMethod()
        {
          Console.WriteLine("Base.OverrideMethod");
        }
      public virtual void HideMethod()
        {
          Console.WriteLine("Base.HideMethod");
        }
   }

    class Derived:Base
   {
      public override void OverrideMethod()
        {
          Console.WriteLine("Derived.OverrideMethod");
        }
      public new void HideMethod()
        {
          Console.WriteLine("Derived.HideMethod");
        }
   }

(1) 这到底是做什么的?

    Base x=new Derived();

(2) 这些到底有什么作用?

    x.OverrideMethod();
    x.HideMethod();

提前谢谢你:)

有隐藏也有凌驾。两者是对立的。就我个人而言,我总是忘记躲在思考之外 "this is not overriding, better not to mix those up"。我不记得我用过它的一个案例。如果我无法覆盖,我只是封装而不是处理隐藏。所以这很可能是很久以前有人想到的事情之一,但从未完全追踪。

覆盖 更改实现。它必须被 baseclass(虚拟)明确允许。它必须由派生 class 显式完成。但反过来,即使 class 被强制转换为基本类型,覆盖也会优先。示例:Object.ToString()。像 Console.WriteLine 这样的代码有只接受一堆对象的重载。但是因为你不能打印对象,它只是调用它的 ToString() 方法。

隐藏 不会改变实现。它只是隐藏它。只要您不将其转换为更基本的类型,您就会让隐藏实现隐藏 baseclass 类型。但是一旦你放下,baseclass 实现就会自我声明。反过来,没有 "allowance" 是必需的。