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 回答