博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#中的接口
阅读量:4647 次
发布时间:2019-06-09

本文共 2509 字,大约阅读时间需要 8 分钟。

什么是接口

  • 接口可以理解为对一组方法声明进行的统一命名,但这些方法没有提供任何实现.也就是指将一组方法声明在一个接口中,在该接口中定义比较方法,然后让这些类型去继承该接口,并实现自己的比较方法

如何使用接口

  • 接口的定义

    //使用关键字 interfaceinterface ICustomCompare{    //定义比较方法,继承该接口的类都要实现该方法    int CompareTo(object other);}
  • 继承接口

    //定义类并继承接口public class Person:ICustomCompare{    int age;    public int Age    {        get{ return age; }        set{ age=value; }    }    //实现接口方法    public int CompareTo(object value)    {        if(value==null)        {            return 1;        }        //将object类型强制转换为Person类型        Person otherp=(Person)value;        //把当前对象的Age属性与需要比较的对象Age属性进行对比        if(this.Age < otherp.Age)        {            return -1;        }        if(this.Age > otherp.Age)        {            return 1;        }        return 0;    }}

显式接口实现方式

namespace Person{    ///     /// 中国人打招呼接口    ///     interface IChinaseGreeting    {        //接口方法声明        void SayHello();    }    ///     /// 美国人打招呼接口    ///     interface IAmericanGreeting    {        //接口方法声明        void SayHello();    }    ///     /// Speaker类实现了二个接口    ///     public class Speaker : IChinaseGreeting, IAmericanGreeting    {        //隐式接口的实现        public void SayHello()        {            Console.WriteLine("你好");        }        //显式接口的实现        void IChinaseGreeting.SayHello() {            Console.WriteLine("你好");        }        void IAmericanGreeting.SayHello()        {            Console.WriteLine("Hello");        }    }    class Program    {        static void Main(string[] args)        {            Speaker p=new Speaker();            //隐式调用打招呼的方法,都会输出 "你好"            p.SayHello();            //显式的调用中国人打招呼的方法            IChinaseGreeting chinaseGreeting = (IChinaseGreeting)p;            chinaseGreeting.SayHello();            //显式的调用美国人打招呼的方法            IAmericanGreeting americanGreeting = (IAmericanGreeting)p;            americanGreeting.SayHello();            Console.ReadLine();            //输出结果            //你好            //你好            //Hello        }    }}
  • 若使用显式接口实现方式是,需要注意以下几个问题
    • 方法不能使用任何访问修饰符,显式实现的成员默认为私有
    • 显式实现的成员默认是私有的,所以这些成员都不能通过类的对象进行访问
  • 显式与隐式接口的区别
    • 采用隐式接口实现时,类和接口都可以访问接口中的方法;而若采用显式接口实现实现方式,接口方法只能通过接口来完成访问,因为此时接口方法默认为私有
    • 当类实现多个接口,并且接口中包含相同的方法名称,参数和返回类型是,则应使用显式接口实现方式.

接口与抽象类

  • 接口与抽象类的区别
    • 抽象类使用abstract关键字进行定义,而接口使用interface关键字定义;它们都不能进行实例化
    • 抽象类中可包含虚方法,非抽象方法和静态成员;但接口中不能包含虚方法和任何静态成员,并且接口中只能定义方法,属性,索引,事件,且方法不能具体实现(无大括号),方法和具体实现由实现类完成
    • 抽象类不能实现多继承,接口则支持多继承.
    • 抽象类是对一类对象的抽象,继承于抽象类的类的类与抽象类为属于的关系;而类实现接口只是代表实现类具有接口声明的方法,是一种can-do 的关系.所以一般接口后都带有able字段,表示"我能走"的意思;

转载于:https://www.cnblogs.com/youMo/p/10360400.html

你可能感兴趣的文章
【js操作url参数】获取指定url参数值、取指定url参数并转为json对象
查看>>
移动端单屏解决方案
查看>>
web渗透测试基本步骤
查看>>
使用Struts2标签遍历集合
查看>>
angular.isUndefined()
查看>>
第一次软件工程作业(改进版)
查看>>
网络流24题-飞行员配对方案问题
查看>>
Jenkins 2.16.3默认没有Launch agent via Java Web Start,如何配置使用
查看>>
引入css的四种方式
查看>>
iOS开发UI篇—transframe属性(形变)
查看>>
3月7日 ArrayList集合
查看>>
jsp 环境配置记录
查看>>
Python03
查看>>
LOJ 2537 「PKUWC2018」Minimax
查看>>
使用java中replaceAll方法替换字符串中的反斜杠
查看>>
Some configure
查看>>
流量调整和限流技术 【转载】
查看>>
正由另一进程使用,因此该进程无法访问此文件。
查看>>
1 线性空间
查看>>
VS不显示最近打开的项目
查看>>