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