今天我正在阅读通过显式的实现接口。我开始知道它的一个用处是限制客户端通过类的对象访问接口方法。抽象类的显式实现方式接口
有什么办法可以使用抽象类来创建相同的功能?就像通过派生类的对象限制对方法的访问一样?
今天我正在阅读通过显式的实现接口。我开始知道它的一个用处是限制客户端通过类的对象访问接口方法。抽象类的显式实现方式接口
有什么办法可以使用抽象类来创建相同的功能?就像通过派生类的对象限制对方法的访问一样?
您可以声明一个方法为protected
- 那么它只适用于该类和子类(它不在public
API上)。但是,如果你想,你不能override
它,使之public
在派生类 - 你需要new
它:
abstract class Foo {
protected void Bar() {...}
}
class SuperFoo : Foo {
new public void Bar() { base.Bar(); } // <==== ugly
}
我想通过抽象类引用变量访问抽象方法。不通过派生类引用变量,尽管派生类可以实现方法。希望我现在清楚。 – 2013-02-26 09:12:13
@DeepakRaj抽象方法只要是公开的就可以很好地使用;所以如果'Foo'有一个'public abstract void SomeMethod();''你可以做'Foo foo = new SuperFoo(); foo.SomeMethod();' – 2013-02-26 11:50:07
感谢Marc的解释。用同样的例子,如果我们有'SuperFoo sfoo = new SuperFoo();',有没有办法限制'sfoo.SomeMethod(); ** ** ** – 2013-02-26 12:24:03
你的意思,你只希望一个功能访问抽象类'通过抽象类的方法? – Default 2013-02-26 08:02:52
yes..precisely .. – 2013-02-26 09:01:59
请问为什么?你想用什么场景解决? – Default 2013-02-26 09:04:55