C# 接口详解

概念

接口描述的是可属于任何类或结构的一组相关行为,所以实现接口的类或结构必须实现接口定义中指定的接口成员。
定义:使用interface 关键字,由方法、属性、事件、索引器或这四种成员类型的任意组合构成。另可使用new、public、protected、intenal和private等修饰符实现接口,但接口成员必须是公共的。
正常人刚接触接口常认为接口多此一举,毕竟直接调用方法就可以了,为什么要用接口呢。那其存在的意义是什么?
总结了一下,接口的目的在于方便类的统一管理和调用,增强约束力。
下面举个简单例子。

示例

interface IProgram
    {
        void Fun();
    }
    class Program:IProgram
    {
        void IProgram.Fun()
        {
            Console.WriteLine("哈哈");
        }
        static void Main(string[] args)
        {
            IProgram p =new Program();  //声明接口实例
            p.Fun();
        }
    }

先看上面的代码,声明一个接口,然后实例化调用方法,似乎我不要接口也可以实现,而且更简单。

class Program 
{
    void Fun()
    {
        Console.WriteLine("哈哈.");
    }
    static void Main(string[] args)
    {
        Program p = new Program();
        p.Fun();   
    }
}

那接口在这种情况下并没有什么用。看下面的代码:

class Laugh
//显式实现接口成员
{
    public void Fun()
    {
        Console.WriteLine("哈哈.");
    }
}
class Cry
//显式实现接口成员
{
    public void Fun()
    {
        Console.WriteLine("呵呵.");
    }
}
class Program
{
    static void Main(string[] args)
    {
        Laugh p = new Laugh();  
        p.Fun();
        
        Cry c = new Cry();
        c.Fun();
    }
}
interface IProgram
{
    void Fun();
}
class Laugh: IProgram
//显式实现接口成员
{
    public void Fun()
    {
        Console.WriteLine("哈哈.");
    }
}
class Cry: IProgram
//显式实现接口成员
{
    public void Fun()
    {
        Console.WriteLine("呵呵.");
    }
}
class Program
{
    static void Main(string[] args)
    {
        IProgram p = new Laugh();  
        p.Fun();

        IProgram c = new Cry();
        c.Fun();
    }
}

由上面的对比可以看出,接口适用于多个类都有共同的方法,使用接口可以对这些方法同统一调用管理。

接口继承和类继承的区别

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

参考文章如下:
C# 接口《通俗解释》
C#之接口

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值