0

私はこれを持っています:

class Class1
{...}

public class Class2 : Class1
{
   public void myMethod(){};
}


var sth = new Class2();

今、やりたいのですsth.myMethod()が、そのメソッドにアクセスできません。なぜですか? それを修正する方法は?Class1(そして、公開することでそれを修正したくありません)

4

1 に答える 1

5

これは許可されていません。コンパイラは次のようなエラーを出します:

一貫性のないアクセシビリティ: 基本クラス 'YourNamespace.Class1' はクラス 'YourNamespace.Class2' よりもアクセスしにくい

公開しているクラスよりもアクセシビリティが低いクラスから継承することはできません。

このタイプのシナリオでの最適なオプションは、継承ではなく構成を使用することです。

public class Class2
{
    private Class1 class1 = new Class1(); // Create an instance instead of inheriting...

    public void MyMethod()
    {
    }
}
于 2013-02-27T19:34:05.420 に答える