3

私は3つのクラスを持っています:

  1. ベースクラス
  2. BaseClass を継承するミドルクラス
  3. Middleclassを継承するClientClass

BaseClass のメソッドを非表示にして、ClientClass に表示されないようにするにはどうすればよいでしょうか?

例:

public class BaseClass
{
    public void BaseMethod1()
    {
    }

    public void BaseMethod2()
    {
    }
}

public class MiddleClass : BaseClass
{
    public void MiddleMethod()
    {
        this.BaseMethod1();
    }
}

public class ClientClass : MiddleClass
{
    public void Test()
    {
        this.MiddleMethod();
        this.BaseMethod1(); // I can't see this method here
    }
}

編集:サンプルを変更し、「this.BaseMethod1();」を配置しました。ミドルクラスで

4

4 に答える 4

4

そのメソッドをプライベートとして定義する必要があります。参考までに、ここにアクセス修飾子に関する詳細情報があります

public : 型またはメンバーは、同じアセンブリまたはそれを参照する別のアセンブリ内の他のコードからアクセスできます。

private : 型またはメンバーは、同じクラスまたは構造体のコードによってのみアクセスできます。

protected : 型またはメンバーは、同じクラスまたは構造体、またはそのクラスから派生したクラス内のコードによってのみアクセスできます。

internal :型またはメンバーは、同じアセンブリ内の任意のコードからアクセスできますが、別のアセンブリからはアクセスできません。

于 2013-04-26T12:40:53.477 に答える
4

基本クラスの一部の機能をすべてではなく一部の派生クラスから隠したい場合、それはコードの匂いであり、設計を再考する必要があると私は常に信じてきました。

于 2013-04-26T12:44:48.137 に答える