接口(c#)

接口

  1. 接口的定义与实现
  2. 隐式实现,显示实现的区别
  3. 哪些东西可以被继承
  4. 接口中有哪些成员
namespace 接口
{
    class Program
    {
        static void Main(string[] args)
        {

        }
    }

    class Bird
    {

    }

    class Transport
    {

    }

    class Mahjong : Bird
    {

    }

    //如果一个类继承了别的类又继承了接口,那么基类必须写在所有的接口之前
    //如果一个类继承了某个接口,那么必须将接口中的所有的成员全部实现一遍(把函数都写出来)
    //隐式实现接口的话,对应的函数前必须加上public,如果使用快速实现(alt + enter)的话会自动加上public
    //显示实现接口的话,对应函数前就不能加任何访问权限修饰符


    //那些东西可以被继承
    //类,接口
    //类可以继承于类或接口,结构体只能实现接口
    //接口可以集成另一个接口,在类继承该接口时,也同样要实现出所有继承链上的抽象函数
    //一个类实现了某个接口 == 一个类继承了某个借口

    //接口中可以有哪些成员
    //1、函数的声明
    //2、属性的声明(只能比声明的访问器写的多,不能比声明的访问器写得少)
    //3、索引器的声明
    //4、事件的声明

    struct Car : IFly
    {
        public int Num { get => throw new NotImplementedException(); set => throw new NotImplementedException(); }

        public void Fly()
        {
            throw new NotImplementedException();
        }

        public void Run()
        {
            throw new NotImplementedException();
        }
    }


    class Plane : Transport, IFly, ISuperFly
    {
        int IFly.Num { get => throw new NotImplementedException(); set => throw new NotImplementedException(); }

        //public void Fly()
        //{

        //}
        void IFly.Run()
        {
            throw new NotImplementedException();
        }

        void ISuperFly.Fly()
        {
            throw new NotImplementedException();
        }
    }


    //接口无法直接被实例化
    //在c#代码中,定义接口,接口名的首字符为大写字母I,用于表示这是一个接口
    //在接口中只能够存在行为,且是一种高度抽象的行为(不用实现的方法或者函数称为高度抽象的-行为)
    interface IFly : ISuperFly
    {
        //函数的声明(没有具体去写函数的函数体)
        //只声明没有具体的函数体的函数,我们称为抽象函数
        //在接口中,函数的声明前不能加任何的访问权限修饰符
        void Run();

        //属性的声明
        int Num { get; set; }
    }

    interface ISuperFly  
    {
        void Fly();
    }

}

注意:

1.在c#代码中,定义接口,接口名的首字符为大写字母I,用于表示这是一个接口

上一篇:php 波浪号 ~ 和文件上传权限计算


下一篇:[Java 07] 异常处理 2021.11.09