当前位置: 代码迷 >> ASP.NET >> 如何样隐藏基类方法
  详细解决方案

如何样隐藏基类方法

热度:5979   发布时间:2013-02-25 00:00:00.0
怎么样隐藏基类方法
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就不必继承 
你要把抽象类的抽象部分拿出来设计为接口 只需要继承接口就行了。。。 
当然我这么说只是针对你的这个示例, 你肯定也不是这样子的

如果情况复杂你应该考虑使用设计模式。 这种子类富于变化的 我想应该考虑下原型模式吧

------解决方案--------------------------------------------------------
扩展方法应该可以吧
  相关解决方案