在基类内部调用时如何从派生类中隐藏基类方法?

问题描述 投票:0回答:1

在 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
    }
}

只要您在基类内部调用派生类的私有基方法,它就可以工作。我希望私有方法始终被隐藏。

c# inheritance
1个回答
0
投票

不看你的原因,可能是防止在基类内部调用派生类的对象的私有基类方法的方法:

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.");
    }
}

主要。

因此,您可以通过在派生类中覆盖目标方法来隐藏目标方法。

© www.soinside.com 2019 - 2024. All rights reserved.