2013-02-26 72 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