我有这个:
class Class1
{...}
public class Class2 : Class1
{
public void myMethod(){};
}
var sth = new Class2();
现在,我想做sth.myMethod()
,但这种方法无法访问,为什么?如何解决? (我不想通过公开Class1
来解决这个问题)
答案 0 :(得分:5)
这是不允许的。编译器会给出如下错误:
可访问性不一致:基类'YourNamespace.Class1'比类'YourNamespace.Class2'
更难访问
你不能从一个可访问性低于你所暴露的类的类继承。
此类场景中的最佳选择是使用合成而不是继承。
public class Class2
{
private Class1 class1 = new Class1(); // Create an instance instead of inheriting...
public void MyMethod()
{
}
}