2013-02-26 80 views
1

今天我正在閱讀通過顯式的實現接口。我開始知道它的一個用處是限制客戶端通過類的對象訪問接口方法。抽象類的顯式實現方式接口

有什麼辦法可以使用抽象類來創建相同的功能?就像通過派生類的對象限制對方法的訪問一樣?

+0

你的意思,你只希望一個功能訪問抽象類'通過抽象類的方法? – Default 2013-02-26 08:02:52

+0

yes..precisely .. – 2013-02-26 09:01:59

+0

請問爲什麼?你想用什麼場景解決? – Default 2013-02-26 09:04:55

回答

2

您可以聲明一個方法爲protected - 那麼它只適用於該類和子類(它不在public API上)。但是,如果你想,你不能override它,使之public在派生類 - 你需要new它:

abstract class Foo { 
    protected void Bar() {...} 
} 
class SuperFoo : Foo { 
    new public void Bar() { base.Bar(); } // <==== ugly 
} 
+0

我想通過抽象類引用變量訪問抽象方法。不通過派生類引用變量,儘管派生類可以實現方法。希望我現在清楚。 – 2013-02-26 09:12:13

+0

@DeepakRaj抽象方法只要是公開的就可以很好地使用;所以如果'Foo'有一個'public abstract void SomeMethod();''你可以做'Foo foo = new SuperFoo(); foo.SomeMethod();' – 2013-02-26 11:50:07

+0

感謝Marc的解釋。用同樣的例子,如果我們有'SuperFoo sfoo = new SuperFoo();',有沒有辦法限制'sfoo.SomeMethod(); ** ** ** – 2013-02-26 12:24:03