本身并不实现功能,但提供一种模板定义,为从它继承类或结构提供了一种定义的规范

有了接口,程序员可以把程序定义的更积极啊清晰和条理化

  • 理解接口
    1. 接口支持多继承;抽象类不能实现多继承
    2. 接口只能定义抽象规则;抽象类即可以定义规则,还可以提供已实现的成员
    3. 接口是一组行为规范;抽象类是一个不完全的类,着重族的概念
    4. 接口可以用于支持回调;抽象类不能支持回调,因为继承不支持
    5. 接口只包含方法、属性、索引器、事件的签名,但不能定义字段和包含实现的方法;抽象类可以定义字段、属性、包含有实现的方法
    6. 接口刻意作用于值类型和引用类型;抽象类只能作用于引用类型
    • 作用上的区别 抽象类&接口
      1. 抽象类 是对象的抽象,着重表现在继承上,从抽象类派生的类和抽象类存在派生关系
      2. 接口 用来定义一组行为规范,一旦一个类从一个接口继承后,使用这个类的程序员就会知道这个类肯定包含接口定义的行为,而不用关心如何实现
         using cs002;
        using System;
        using System.Collections.Generic;
        using System.Linq;
        using System.Text;
        using System.Threading.Tasks; namespace cs002
        {
        //定义抽象类
        public abstract class Travel
        {
        protected string _name;
        public abstract string Name//抽象属性
        {
        get;
        set;
        }
        public void Show()
        {
        Console.WriteLine("这是{0}", _name); }
        public abstract void GetWheel();
        }
        //定义接口
        interface IAction
        {
        void Move();
        }
        interface test
        {
        void fuck();
        } public class Car:Travel,IAction,test
        {
        public override string Name
        {
        get
        {
        return _name;
        } set
        {
        _name = value;
        }
        }
        public Car(string name)
        { _name = name; } public override void GetWheel()
        {
        Console.WriteLine("小汽车有四个轮子");
        }
        public void Move()
        {
        Console.WriteLine("小汽车行走在公路上");
        }
        public void fuck()
        {
        Console.WriteLine("fuck it!");
        }
        }
        }
        class Program
        {
        static void fun()
        {
        for (int i = ; i < ; i++)
        Console.Write(i + " ");
        Console.WriteLine(" ");
        }
        static void Main(string[] args)
        {
        Car c0 = new Car("宇宙无敌");
        c0.GetWheel();
        c0.Move();
        c0.fuck();
        }
        }
  • 实现接口 接口是在其派生类中完成的 在c#中,派生类必须实现接口定义的成员;一个类可以派生自多个接口,接口之间用逗号隔开
    1. 实现接口↑
    2. 显式实现:继承多个接口,接口之间有重名的方法或属性;当显示实现接口时,类成员只能通过接口使用
       using cs002;
      using System;
      using System.Collections.Generic;
      using System.Linq;
      using System.Text;
      using System.Threading.Tasks; namespace cs002
      {
      interface It1
      {
      void fuck();
      }
      interface It2
      {
      void fuck();
      }
      public class test : It1, It2
      {
      public test() { }
      void It1.fuck()
      {
      Console.WriteLine("fuck you!");
      }
      void It2.fuck()
      {
      Console.WriteLine("fuck me!");
      }
      }
      class Program
      {
      static void fun()
      {
      for (int i = ; i < ; i++)
      Console.Write(i + " ");
      Console.WriteLine(" ");
      }
      static void Main(string[] args)
      {
      test t = new test();
      It1 t1 = (It1)t;
      t1.fuck();
      It2 t2 = (It2)t;
      t2.fuck(); }
      }
      }

c#学习笔记02——接口的更多相关文章

  1. Redis:学习笔记-02

    Redis:学习笔记-02 该部分内容,参考了 bilibili 上讲解 Redis 中,观看数最多的课程 Redis最新超详细版教程通俗易懂,来自 UP主 遇见狂神说 4. 事物 Redis 事务本 ...

  2. 软件测试之loadrunner学习笔记-02集合点

    loadrunner学习笔记-02集合点 集合点函数可以帮助我们生成有效可控的并发操作.虽然在Controller中多用户负载的Vuser是一起开始运行脚本的,但是由于计算机的串行处理机制,脚本的运行 ...

  3. 机器学习实战(Machine Learning in Action)学习笔记————02.k-邻近算法(KNN)

    机器学习实战(Machine Learning in Action)学习笔记————02.k-邻近算法(KNN) 关键字:邻近算法(kNN: k Nearest Neighbors).python.源 ...

  4. OpenCV 学习笔记 02 使用opencv处理图像

    1 不同色彩空间的转换 opencv 中有数百种关于不同色彩空间的转换方法,但常用的有三种色彩空间:灰度.BRG.HSV(Hue-Saturation-Value) 灰度 - 灰度色彩空间是通过去除彩 ...

  5. SaToken学习笔记-02

    SaToken学习笔记-02 如果排版有问题,请点击:传送门 常用的登录有关的方法 - StpUtil.logout() 作用为:当前会话注销登录 调用此方法,其实做了哪些操作呢,我们来一起看一下源码 ...

  6. 《Master Bitcoin》学习笔记02——比特币的交易模型

    比特币的交易模型 模型基本描述 前面一篇学习笔记01提到了一个交易模型(第三章的内容),在第五章中,除了对这个模型做个详细介绍之外,其实和我上一篇理解的交易模型差不多,一个交易包含输入与输出,比特币是 ...

  7. [Golang学习笔记] 02 命令源码文件

    源码文件的三种类型: 命令源文件:可以直接运行的程序,可以不编译而使用命令“go run”启动.执行. 库源码文件 测试源码文件 面试题:命令源码文件的用途是什么,怎样编写它? 典型回答: 命令源码文 ...

  8. 类型和变量(C#学习笔记02)

    类型和变量 [C#类型和变量(原文参考官方教程)]https://docs.microsoft.com/zh-cn/dotnet/csharp/tour-of-csharp/types-and-var ...

  9. OGG学习笔记02

    实验环境:源端:192.168.1.30,Oracle 10.2.0.5 单实例目标端:192.168.1.31,Oracle 10.2.0.5 单实例 1.模拟源数据库业务持续运行 2.配置OGG前 ...

随机推荐

  1. msf中arp_sweep使用报错:usbmon1:ERROR while getting interface flags:no such device

    在许多的工具使用中,会出现很多的错误,要养成先思考再去寻找帮助的习惯 在用use命令使用arp_sweep模块的时候爆出错误:usbmon1:ERROR while getting interface ...

  2. bool盲注中用到的截取字符串的函数(mid、substr、left)

    介绍一下常用的:mid.substr.left 1.mid()函数 此函数为截取字符串一部分.MID(column_name,start[,length]) 参数 描述 column_name 必需. ...

  3. 报错SQL盲注之BIGINT 溢出

    首先感谢原创博主,在此致敬.本文转自:http://www.cnblogs.com/lcamry/articles/5509112.html MySQL版本在 5.5.5 及其以上 0x01 概述 我 ...

  4. eclipse 下配置安卓环境

    建议你看博客  http://blog.csdn.net/sinat_21184471/article/details/76131141  其中一些细节问题,我会根据我犯过的错误说明一下的!!!! 它 ...

  5. Apache部署Django+Vue

    首先部署Vue,后端项目django开5000端口,所以vue里的路由是ip:5000,然后打包npm run build 生成dist文件 把dist文件里的index.html和static放在/ ...

  6. UVA - 12716 GCD XOR(GCD等于XOR)(数论)

    题意:输入整数n(1<=n<=30000000),有多少对整数(a, b)满足:1<=b<=a<=n,且gcd(a,b)=a XOR b. 分析:因为c是a的约数,所以枚 ...

  7. js实现ctrl+v粘贴上传图片(兼容chrome,firefox,ie11)

    背景 我们或多或少都使用过各式各样的富文本编辑器,其中有一个很方便功能,复制一张图片然后粘贴进文本框,这张图片就被上传了,那么这个方便的功能是如何实现的呢? 原理分析 提取操作:复制=>粘贴=& ...

  8. spark on yarn 安装笔记

    yarn版本:hadoop2.7.0 spark版本:spark1.4.0 0.前期环境准备: jdk 1.8.0_45 hadoop2.7.0 Apache Maven 3.3.3 1.编译spar ...

  9. java课程之团队开发冲刺阶段2.4

    总结昨天进度: 1.照例学习了课前提醒的功能,不可否认的是,在这个功能上,需要的技术和之前的上课静音有点相似,都是通过广播然后开启service服务,然后进行每分钟的监听,查看时间是否一致,在一致的情 ...

  10. Codeforces 1299A/1300C - Anu Has a Function

    题目大意: 给定一种函数F(x,y)=(x|y)-y,| 即按位或运算 给定一个长度为n的数组a[1],a[2],a[3]...a[n] 可以重新排列数组a,使得 F ( ...... F ( F ( ...