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
が呼び出されます。