[C#复习向整合]接口

一.概念

接口是行为的抽象规范

关键字:interface

申明规范:

不能包含成员变量.

只含方法,属性,索引器,事件.

成员不能被实现.

可以不用写访问修饰符,默认public,但不能是private.

接口不能继承类,但可以继承另一个接口.

使用规范:

类可以继承多个接口.

类继承接口后,必须实现接口中所有成员,且public.

特点:

和类的申明类似.

接口是用来继承的.

接口不能被实例化,但可以作为容器存储对象(里氏替换).

二.接口的申明

接口是抽象行为的基类.

一般I开头

interface IFly
{
    public void Fly();
    string Name//属性也不能被实现!只能写成自动属性
    {
        get;
        set;
    }
    //索引器,也不能实现
    int this[int index]
    {
        get;
        set;
    }
    event Action doSomething;
}

三.使用接口

class Animal
{

}
class Person : Animal,IFly//继承了一个类后,又继承接口,接口可以有多个
{
    //实现接口方法一定要public(若接口不是protected)!
    public Fly()
    {

    }
   // public virtual Fly()
    //{
//        这样实现接口函数也是可以的,希望子类可以重写
   // }    
    public string Name
    {
        get;
        set;
    }
    public int this[index]
    {
        get;
        set;
    }
    public event Action doSomething;
}
//使用里氏转换原则,用接口容器装子类
IFly f = new Person();

四.作用

接口是行为的抽象规范.

例如人和鸟都继承自动物类,但不是所有动物类都能飞,将飞的方法写在动物类就不太合适,则可以让鸟继承动物类,又继承飞这样行为的接口.飞机不是动物类,但也可以继承飞的接口.则可以用飞接口,里氏转换存鸟和飞机.

五.接口可以继承接口

接口可以继承多个接口.

接口继承接口可以不用去实现.

等到类继承接口后,类要去实现所有内容.

六.显示实现接口

当一个类继承了两个接口,而两个接口存在同名方法.

显示继承接口不能写访问修饰符.

若接口成员protected,则也必须显示实现.

interface IAtk
{
    public void Hit();
}
interface IDeffend
{
    public void Hit();
}
class Player : IAtk,IDeffend
{
    //这种写法,两个接口的方法就之后有一种表现,不合适
   // public void Hit()
    //{
//
   // }

    void IAtk.Hit()
    {

    }
    void IDeffend.Hit()
    {

    }
    //甚至可以写一个自己的
    public void Hit()
    {

    }
}
//使用时
PLayer p = new Player();
//此时p不能使用Hit()方法了(除法像上文那样Player有个自己的hit),
//只能先转成父类(接口)才能使用
(p as IAtk).Hit();

参考资料<唐老狮C#教程>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值