在 C++ 中,它是通过“使用”完成的,而在 C# 中呢?
public class foo
{
public void print(string s) {...}
}
public class bar : foo
{
// shadowing
public void print(object o) {...}
}
如何提升foo.print
,所以foo.print
和bar.print
编译器的“级别”相同(bar
当然)?
更新 1
最初我添加了一段关于阴影和覆盖之间常见混淆的段落,但后来我删除了它,因为我认为它会冒犯读者。
阴影就像跨越继承树的重载。阴影不是压倒一切的。
更新 2
foo.print
解决重载方法时不再考虑后阴影print
。提升foo.print
会让它重新进入流程——所以当我调用bar_object.print("hello")
该方法时,它foo.print
会被调用。