首先我觉得控制不控制这个好像没有很大的意义,你不用这个方法不就可以了嘛。然后看看那几个public,private,protected的几个保留字或者他们的组合,可能有所帮助。

解决方案 »

  1.   

    不可以除非父类方法声明为private,否则都可以引用不过你这种情况,可以采用new关键字重写父类方法,如:
    public class CChild:CParent
    {
      public void CFuncXX(){};
      public new void FuncY()
      { //什么都不作或者抛一个不支持该方法的异常 }
    }
      

  2.   

    public class CChild:CParent
    {
      public void CFuncXX(){};
      new public void FuncY(){}
    }
    你在继承的概念上含糊不清。
    这样做往往和你预期的行为不符合。CParent的public void FuncY()应该标记为virtual才完全符合上面所说的。
      

  3.   

    如果你是希望该方法已经过期不能再使用,那么那方法应该标记为Obsoletepublic class CParent
    {
      public void FuncX()
      {
        ...
      }
      [Obsolete("该方法已经不能使用。",true)]
      public void FuncY()
      {
        ...
      }
    }
      

  4.   

    在父类中声明成虚函数
    在子类中override
      

  5.   

    谢谢楼上各位。我的原意是在类实例c中不能使用一个方法,也就是说子类不继承父类的某一方法,要这样做时可以在父类中将该方法标记为protected或private;但有一点我没有说清楚,就是说如果有一个类ChildX,也是继承于Parent,但ChildX的实例(例如为cx)可以使用父类的FuncY方法,同时c却不能使用;我认为,如果要产生这种差别,要在Child和ChildX内部做文章,只是不知如何在C#中实现。另:
    与timmy3310(Tim)兄探讨:
    public new void FuncY(){}

    public override void FuncY(){}
    有何不同?
      

  6.   

    参考:
    http://expert.csdn.net/Expert/topic/1155/1155957.xml?temp=.6429102