浅谈C#接口

发表于:2011-12-23 09:33

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:佳园    来源:51Testing软件测试网采编

分享:

  接口的继承:

  接口继承和类继承不同:首先,类继承不仅是说明继承,而且也是实现继承;而接口继承只是说明继承。

  也就是说,派生类可以继承基类的方法实现,而派生的接口只继承了父接口的成员方法说明,而没有继承父接口的实现,其次,C#中类继承只允许单继承,但是接口继承允许多继承,一个子接口可以有多个父接口。

  接口可以从零或多个接口中继承。从多个接口中继承时,用":"后跟被继承的接口名字,多个接口名之间用","分割。

  被继承的接口应该是可以访问得到的,比如从private 类型或internal 类型的接口中继承就是不允许的。

  接口不允许直接或间接地从自身继承。和类的继承相似,接口的继承也形成接口之间的层次结构。

interface IProgram
    {
        void Fun();
    }
    interface IAProgram:IProgram
    {
       
    }
    class Program :  IAProgram
    {
        void IProgram.Fun()
        {
            Console.WriteLine("I am IProgram Fun.");
        }
        static void Main(string[] args)
        {
            Program pro = new Program();
            ((IAProgram)pro).Fun();
            Console.Read();
        }
    }

  接口的覆盖:

  由于接口的实现没有方法体,抽象方法也没有方法体,那么当我们在接口的实现方法里调用抽象方法时,会如何执行呢?

interface IProgram
    {
        void Fun();
    }
    abstract class AProgram : IProgram
    {
        public abstract void AFun();
        void IProgram.Fun()
        {
            AFun();
        }
    }
    class Program:AProgram
    {
        public override void AFun()
        {
            Console.WriteLine("I am AProgram.");
        }
        static void Main(string[] args)
        {
            IProgram pro = new Program();
            pro.Fun();
            Console.Read();
        }
    }
//结果:I am Aprogram.

42/4<1234>
春暖花开更文季,点击参与还有惊喜礼品~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计

法律顾问:上海漕溪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2023
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号