0
我有这样的:类派生和无障碍
class Class1
{...}
public class Class2 : Class1
{
public void myMethod(){};
}
var sth = new Class2();
现在,我想做sth.myMethod()
,但该方法是无法访问的,为什么呢?如何解决这个问题? (我不想通过公开使Class1
修复)
我有这样的:类派生和无障碍
class Class1
{...}
public class Class2 : Class1
{
public void myMethod(){};
}
var sth = new Class2();
现在,我想做sth.myMethod()
,但该方法是无法访问的,为什么呢?如何解决这个问题? (我不想通过公开使Class1
修复)
这是不允许的。编译器会给出如下错误:
可访问性不一致:基类的YourNamespace.Class1“比类较少访问“YourNamespace.Class2”
你不能继承从类与您要暴露的课程相比,具有更低的可访问性。
这种情况下最好的选择是使用组合而不是继承。
public class Class2
{
private Class1 class1 = new Class1(); // Create an instance instead of inheriting...
public void MyMethod()
{
}
}
好的,谢谢你的信息。 :) – ojek 2013-02-27 19:35:07
这[文章](http://stackoverflow.com/questions/6043121/derived-class-accessibility?rq=1)包含相关信息的问题。 – SMT 2013-02-27 19:33:00
如果您希望它的子类是公共的,您将不得不公开基类。 – 2013-02-27 19:34:17