none
【ASP.NET】类如果继承接口是否该类的所有方法都隐式实现了接口中的方法? RRS feed

  • 问题

  • 有一个类Ca  继承了接口 Ib  如: Public Class Ca:Ib
    类Ca中有三个方法A,B,C。其中C是继承接口实现的方法,我想问的是方法A,B是否隐式拥有(实现)了接口Ib的方法C功能?请教高手给予指点,谢谢!

    2010年1月1日 15:55

答案

  • 你好!
         一个类继承了一个接口,准确的说是实现了一个接口,那这个类必须实现接口中的声明的所有方法,编译器会在你的类中寻找和接口的声明中的匹配方法,如果找不到,就出现编译错误!
    周雪峰
    2010年1月2日 2:39
    版主
  • 实现一个接口 那么则需要实现接口中定义的所有方法
    如果你实现接口是通过隐式的方式实现,那么其他方法如A、B则直接可以通过this.C()调用方法C
    如果是通过显示的方式实现接口
    即在类定义中是这样的
    Public Class Ca:Ib
    {

    public void Ib.C()
    {
    }
    }

    那么在A、B中无法通过this调用方法C 而需要先将this转换为Ib

    Ib ib=(ib)this;
    ib.C();

    在外部调用也是类似的方式


    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!My blog~~~
    2010年1月4日 2:04
    版主

全部回复

  • 你好!
         一个类继承了一个接口,准确的说是实现了一个接口,那这个类必须实现接口中的声明的所有方法,编译器会在你的类中寻找和接口的声明中的匹配方法,如果找不到,就出现编译错误!
    周雪峰
    2010年1月2日 2:39
    版主
  • 实现一个接口 那么则需要实现接口中定义的所有方法
    如果你实现接口是通过隐式的方式实现,那么其他方法如A、B则直接可以通过this.C()调用方法C
    如果是通过显示的方式实现接口
    即在类定义中是这样的
    Public Class Ca:Ib
    {

    public void Ib.C()
    {
    }
    }

    那么在A、B中无法通过this调用方法C 而需要先将this转换为Ib

    Ib ib=(ib)this;
    ib.C();

    在外部调用也是类似的方式


    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!My blog~~~
    2010年1月4日 2:04
    版主