【发布时间】:2012-12-10 12:23:16
【问题描述】:
在 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
在解决重载方法print 时,不再考虑阴影foo.print。提升foo.print 会使其重新进入进程——所以当我调用bar_object.print("hello") 时,会调用foo.print 方法。
【问题讨论】:
-
推广是什么意思?你打算发生什么?让
bar.print覆盖foo.print? -
这不是超载吗?在 foo 中你需要一个接受对象的打印方法吗?
标签: c# inheritance shadowing