无法理解隐藏的具体方法 '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" 是必需的。
我很难确切地理解方法隐藏的作用。 有人可以向我解释一下 '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" 是必需的。