none
如何在子类中显式地实现父类的显式接口? RRS feed

  • 问题

  •     interface IMyFace
        {
          void SomeMethod();
        }
    
        class CAA : IMyFace
        {
          //父类使用指定名称(IMyFace)的接口实现
          void IMyFace.SomeMethod() { }
        }//CAA
    
        class CBB : CAA
        {
          //编译报错'CBB.IMyFace.SomeMethod()': containing type does not implement interface 'IMyFace'
          void IMyFace.SomeMethod(){}
    
          //编译报错'no suitable method found to override
          public override void SomeMethod() { }
    
          ////到底应该怎样在CBB类中显式地实现IMyFace呀??
        }//CBB
    
    

    信奎爷,无所畏惧!!
    2011年2月19日 4:45

答案

  • 解决第一个编译问题:

     

     interface IMyFace
      {
       void SomeMethod();
      }
    
      class CAA : IMyFace
      {
       //父类使用指定名称(IMyFace)的接口实现
       void IMyFace.SomeMethod() { }
      }//CAA
    
      class CBB : CAA,IMyFace //请看下面解释
      {
    
       void IMyFace.SomeMethod(){}
    
      }
    
    因为CAA已显示实现IMyFace接口,因此无需再实现,所以如果要让CBB显示实现,则需要加 ",IMyFace"

     

    • 已建议为答案 Neddy Ren 2011年2月22日 3:30
    • 已标记为答案 Neddy Ren 2011年2月23日 4:21
    2011年2月19日 14:05
    版主
  • 要解决第二个问题,请参考:(我猜想,这才是你的目的)

      interface IMyFace
      {
       void SomeMethod();
      }
    
      class CAA : IMyFace
      {
        public virtual void SomeMethod() { }
      }//CAA
    
      class CBB : CAA
      {
       public override void SomeMethod() { }
      }
    

    想要覆写,父类就需要虚方法。

    格式太难排分两个贴子。

    • 已建议为答案 Neddy Ren 2011年2月22日 3:30
    • 已标记为答案 Neddy Ren 2011年2月23日 4:20
    2011年2月19日 14:08
    版主

全部回复

  • 解决第一个编译问题:

     

     interface IMyFace
      {
       void SomeMethod();
      }
    
      class CAA : IMyFace
      {
       //父类使用指定名称(IMyFace)的接口实现
       void IMyFace.SomeMethod() { }
      }//CAA
    
      class CBB : CAA,IMyFace //请看下面解释
      {
    
       void IMyFace.SomeMethod(){}
    
      }
    
    因为CAA已显示实现IMyFace接口,因此无需再实现,所以如果要让CBB显示实现,则需要加 ",IMyFace"

     

    • 已建议为答案 Neddy Ren 2011年2月22日 3:30
    • 已标记为答案 Neddy Ren 2011年2月23日 4:21
    2011年2月19日 14:05
    版主
  • 要解决第二个问题,请参考:(我猜想,这才是你的目的)

      interface IMyFace
      {
       void SomeMethod();
      }
    
      class CAA : IMyFace
      {
        public virtual void SomeMethod() { }
      }//CAA
    
      class CBB : CAA
      {
       public override void SomeMethod() { }
      }
    

    想要覆写,父类就需要虚方法。

    格式太难排分两个贴子。

    • 已建议为答案 Neddy Ren 2011年2月22日 3:30
    • 已标记为答案 Neddy Ren 2011年2月23日 4:20
    2011年2月19日 14:08
    版主