在 C# 中,我有一个基类:
public class A
{
private void foo(){}
}
以及来自
B
的派生类 A
。
我希望 foo()
对 B
隐藏,所以这很好用,我无法调用:
new B().foo()
但我可以在里面做这个
A
:
public class A
{
private void foo(){}
public void bar(){
new B().foo(); //this compiles, I don't want it to be possible
}
}
只要您在基类内部调用派生类的私有基方法,它就可以工作。我希望私有方法始终被隐藏。
不看你的原因,可能是防止在基类内部调用派生类的对象的私有基类方法的方法:
using System;
public class A {
private void foo() { Console.WriteLine("A!"); }
public void boo() {
new B().foo();
}
}
public class B : A {
public void foo() { }
}
static class Program {
static void Main() {
new A().boo();
Console.WriteLine("Main.");
}
}
主要。
因此,您可以通过在派生类中覆盖目标方法来隐藏目标方法。