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

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

  • 理解接口
    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(); }
      }
      }

最新文章

  1. script在html中的摆放位置
  2. CLR via C# 学习计划
  3. 通过其他页面跳转到tableBar指示的界面
  4. Bootstrap 3 简介
  5. 移动端页面使用单位的问题:关于px、百分比、em、rem开发中逐渐转换的问题记录
  6. [原]Golang FileServer
  7. Windows下MinGW编译Qt4
  8. Assetbundle的杂七杂八
  9. Java-日历表
  10. INSTALL_FAILED_VERSION_DOWNGRADE报错
  11. 【MySql】——MHA+GTID+failover+binlog-server+Atlas
  12. 初次入坑jade模板引擎(一)
  13. Spring学习—生成图片验证码
  14. Lucene.net(4.8.0) 学习问题记录二: 分词器Analyzer中的TokenStream和AttributeSource
  15. MSIL学习------从HelloWorld开始
  16. C#实现数字字符串左补齐0的方法
  17. 使用PandoraBox时的软件源配置
  18. JAVA四则运算(读写文件)
  19. 重读《深入理解Java虚拟机》三、Java虚拟机执行的数据入口(类文件结构)
  20. Hadoop概念学习系列之谈hadoop/spark里分别是如何实现容错性?(四十二)

热门文章

  1. 摩尔纹滤镜moir
  2. Object.keys(),Object.values(),Object.entries()
  3. c++ auto_ptr笔记
  4. C++ 大文件读写
  5. 大数据高可用集群环境安装与配置(09)——安装Spark高可用集群
  6. 个人微信开发API协议(转)
  7. python 的第一个界面程序(PyQt5)
  8. dubbo小教程
  9. 微服务基础——厉害了!API网关
  10. (5)opencv的基础操作和矩阵的掩模操作