- C# code
public abstract class myBase { public abstract void aa(); public abstract void ac(); public void a() { } public void b() { } } public class myClass : myBase { public override void aa() { throw new Exception("The method or operation is not implemented."); } public override void ac() { throw new Exception("The method or operation is not implemented."); } }
以上代码里myClass应该有四个方法,aa(),ac(),a(),b();
这个时候,aa()和b()在myClass是无效的,怎么样隐藏这两个方法呢?
这里的隐藏不是指用new或是虚方法的override,而是要在new myClass时无法请求到隐藏的方法,类似显示实现接口的那种隐藏效果,不然每次都要标注某某方法作废...相当的麻烦呢。
------解决方案--------------------------------------------------------
隐藏?呵呵。
把基类的方法设为 private,子类就看不到了,当然了,子类永远也看不到了,但问题是,你在abstract类里面设 private 方法的话,有什么用?倒是可以由其它的类成员方法来调用呵……
把基类的方法设为 protected,子类可以看得到,但外面访问不到……
不知道你想干什么。你的要求,似乎不太合理。
------解决方案--------------------------------------------------------
子类继承父类,这个没有什么问题。
如果子类无法实现父类的一些方法,那么这个子类就是一个不合格的子类。
------解决方案--------------------------------------------------------
既然ab对myclass无效 myclass就不必继承
你要把抽象类的抽象部分拿出来设计为接口 只需要继承接口就行了。。。
当然我这么说只是针对你的这个示例, 你肯定也不是这样子的
如果情况复杂你应该考虑使用设计模式。 这种子类富于变化的 我想应该考虑下原型模式吧
------解决方案--------------------------------------------------------
扩展方法应该可以吧