类派生和可访问性

时间:2013-02-27 19:30:59

标签: c# .net

我有这个:

class Class1
{...}

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


var sth = new Class2();

现在,我想做sth.myMethod(),但这种方法无法访问,为什么?如何解决? (我不想通过公开Class1来解决这个问题)

1 个答案:

答案 0 :(得分:5)

这是不允许的。编译器会给出如下错误:

  

可访问性不一致:基类'YourNamespace.Class1'比类'YourNamespace.Class2'

更难访问

你不能从一个可访问性低于你所暴露的类的类继承

此类场景中的最佳选择是使用合成而不是继承。

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

    public void MyMethod()
    {
    }
}