/* 1. 实现多态的两种方式.
             *    使用虚方法实现多态.
             *    使用抽象方法实现多态.
             *
             * 2. 虚方法与抽象方法区别和联系
             *    a. 相同点: 都有继承关系. 有种族感.
             *               无论是抽象方法还是虚方法 子类都要去重写.
             *              
             *    b. 不同点: 虚方法子类可以重写也可以不重写.
             *               抽象方法子类必须重写.
             *
             *    c. 具体的几个不同点.
             *       1).  被virtual修饰的方法叫做虚方法 被abstract修饰的方法叫做抽象方法.
             *       2).  虚方法子类可以重写也可以不重写 抽象方法子类必须重写除非子类也是1个抽象类.
             *       3).  虚方法 必须要有方法体; 抽象方法不能有方法体;
             *      
             *
             * 3. 鸟  飞机  超人.
             *    他们都有飞的行为,但是每1种飞的行为的实现是不一样.
             *    多态.
             *   
             * 4. 发现有一些事物 具有相同的行为  但是他们却没有共同的父类. 因为他们根本就不是同1个物种.
             *   
             *
             * 5. 接口
             *    是1个特殊的抽象类. 因为接口中定义的成员必须都是抽象成员. 不能定义非抽象成员.
             *    抽象类: 继承一些东西给子类,并规范子类的行为.
             *    接口: 就是纯粹的用来规范子类的行为,因为接口中只能定义抽象成员.
             *
             *
             * 6. 声明的接口的语法
             *    interface 接口的名称
             *    {
             *       这里面写上抽象方法.
             *       public abstrcat void Run();
             *    }
             *   
             *    命名规范: IRunable
             *   
             *    接口中只能定义抽象方法. 也就是说接口中的成员全部都是抽象方法.
             *    所以,接口中的成员 不需要加abstract 本身就是abstract
             *    接口中的成员因为是用来被子类实现的.所以接口中的成员的访问修饰符默认就是public  不需要为接口成员加访问修饰符.
             *   
             *    接口中的成员默认就是public abstract
             *   
             *   
             * 7. 接口中的成员:
             *    本质上来讲,接口中只能定义抽象方法. 并且这个抽象方法不需要加访问修饰符和abstract
             *    属性的本质是方法:
             *    所以,接口中可以定义: 方法  属性.  无论是方法还是属性都不能有实现.
             *                       索引器 事件. 这两个本质上仍然是方法.
             *    
             *
             * 8. 接口和抽象类一样,都是用来被继承的.
             *    我们一般情况下 叫类实现1个接口.
             *    语法:
             *    class 类名 : 接口名
             *    {
             *       
             *    }
             *   
             *    1个类如果实现了1个接口. 那么就必须要求这个类实现接口中定义的所有的成员.
             *    实现类实现接口的语法.
             *   
             *    与接口中的抽象方法签名一致. 但是不要使用override
             *    快捷方式: 选择接口名 右键 实现接口
             *    ctrl + .
             *   
             *    再次强调: 接口是1个特殊的抽象类. 特殊在,接口中的成员必须全部是抽象成员.
             *  
             *
             * 9. 接口的目的:  仍然是为了多态.
             *    抽象类: 将非抽象成员继承给子类,并使用抽象方法来规范子类的行为.
             *    接口:  纯粹的是来规范子类的行为.
             *   
             * 10. 什么时候要使用接口呢?
             *     多个类具有相同的行为,但是找不到父类. 这个时候就可以使用接口来实现多态.
             *
             * 11. 1个类只能有1个父类,但是1个类可以实现多个接口.
             *     如果1个类实现了多个接口 那么要求这个类必须要实现所有接口中的成员
             *    
             *     1个类可以同时集成1个类 并实现接口 这个时候父类要写在最前面.
             *     
             * -------------------------
             *  真鸭子 木鸭子 橡皮鸭子......
             * 
             *  每1种鸭子都会游泳.但是每1种鸭子的游泳方式是不一样的.
             *  真鸭子 和橡皮鸭子会叫. 木鸭子不会叫.
             *  嘎嘎    唧唧
             * 
             *  用多态设计1个程序
             *  让会叫的鸭子叫  让会游泳的鸭子游泳.
             * 
             * --------------------------------------------
             * 12.接口之间可以继承并且可以多继承.
             *
             *    定义接口的时候要尽量避免接口污染.
             *
             *
             *
             * 13.显示实现接口.
             *    类中刚好有1个和接口成员同名的成员. 这个时候编译器就会认为这个方法是在实现接口.
             *    我们希望重新并且专门的写1个方法来实现接口 而不是这个方法来实现接口.
             *    这个时候就可以 显示实现接口.
             *   
             *    显示实现接口的方法 只能通过接口变量来调用.
             *
             *
             *
             * 14.接口总结
             *    接口是一种规范。为了多态。
               接口不能被实例化(接口是特殊抽象类,抽象类中可能有抽象方法,实例化没有意义)。
               接口中的成员不能加“访问修饰符”,接口中的成员访问修饰符为public,不能修改。(默认为public)
             *    接口中的成员不能加"abstract" 接口中的所有成员都是抽象成员 默认就是 所以不需要再加.
               接口中的成员不能有任何实现(“光说不做”,只是定义了一组未实现的成员)。
               接口中只能有方法、属性、索引器、事件,不能有“字段”。
               接口与接口之间可以继承,并且可以多继承。
               实现接口的子类必须实现该接口的全部成员。
             *
               一个类可以同时继承一个类并实现多个接口,如果一个子类同时继承了父类A,并实现了接口IA,那么语法上A必须写在IA的前面。class MyClass:A,IA{},因为类是单继承的。
             
             * 当一个抽象类实现接口的时候,如果不想把接口中的成员实现,可以把该成员实现为abstract。
             *
           “显示实现接口”,只能通过接口变量来调用(因为显示实现接口后成员为private)。
             * 
             * ----------
             * 1. 接口是1个特殊的抽象类.里面只能定义抽象方法.
             * 2. 接口为了纯粹的规范子类的行为而实现多态.
             * 3. 什么使用.
             *
             *
             *
             *
             */

C# 接口笔记的更多相关文章

  1. nopCommerce 3.9 接口笔记

    接口笔记 Nop.Services.Configuration ISettingService : 配置接口(查看) Nop.Services.Localization ILocalizationSe ...

  2. cxf方式实现webservice接口笔记

    1.配置cxf的jar包依赖: 因maven中央仓库会自带cxf的相关依赖jar,故去maven官网搜索并获取pom配置到本地pom.xml文件即可,maven中央仓库搜索引擎地址:http://se ...

  3. tornado请求头/状态码/接口 笔记

    set_header()/set_default_headers() set_header():设置请求头数据 set_default_headers():设置默认请求头数据 import torna ...

  4. ApplicationEventMulticaster接口笔记

    ApplicationEventMulticaster 这个接口可以管理很多个ApplicationListener对象.并将事件发布给这些监听器. ApplicationEventPublisher ...

  5. jdk8中几个核心的函数式接口笔记

    1. Function接口 /** * function 接口测试 * function 函数只能接受一个参数,要接受两个参数,得使用BiFunction接口 */ public class Func ...

  6. API接口笔记

    1.基类   定义返回信息 protected $user; //用户表 protected $token; //用户token protected $isSuccess = FALSE; //状态是 ...

  7. drupal7 sql接口笔记

    1.查询: execute() ->fetch():从结果集中取出一行作为一个对象 execute() ->fetchField():获取单个值 execute() ->fetchA ...

  8. i2c接口笔记

    一. i2c基础知识 1. NACK信号:当在第9个时钟脉冲的时候SDA线保持高电平,就被定义为NACK信号.Master要么产生STOP条件来放弃这次传输,或者重复START条件来发起一个新的开始. ...

  9. SQL 笔记 By 华仔

    -------------------------------------读书笔记------------------------------- 笔记1-徐 最常用的几种备份方法 笔记2-徐 收缩数据 ...

随机推荐

  1. java ArrayList 实现

    关于ArrayList的实现和原理,原文出处:http://www.cnblogs.com/ITtangtang/p/3948555.html 我觉得他写的非常好,真的很好. 做一个记录和总结吧 pu ...

  2. Spring+SpringMvc+Mybatis框架集成搭建教程五(项目源码发布到GitHub)

    一.背景 我们做完了上面的四步操作以后,来把我们写好的项目提交到自己的GitHub仓库进行版本管理,具体步骤如下. 二.提交步骤 1.首先你要保证你已经有GitHub的账号和密码(没有可以去githu ...

  3. centos下查看最大Socket连接数

    使用命令ulimit -a查看,其中open files就是最大连接数,一般情况下web服务器最大连接数的设置不能超过它 修改最大连接数:vi /etc/security/limits.conf 文件 ...

  4. [MongoDB]MongoDB的优缺点及与关系型数据库的比较

    汇总: 1. [MongoDB]安装MongoDB2. [MongoDB]Mongo基本使用:3. [MongoDB]MongoDB的优缺点及与关系型数据库的比较4. [MongoDB]MongoDB ...

  5. 取两个DataTable的交集,删除重复数据

    /// <summary> /// 取两个DataTable的交集,删除重复数据 /// </summary> /// <param name="sourceD ...

  6. MVC 好记星不如烂笔头之 ---> 页面压缩GIP

    public class BaseController : Controller { /// <summary> /// Called before the action method i ...

  7. redis数据类型之—Set

    (1)set 简单介绍 set集合的数据是不重复的.无序的,一个集合类型键可以存储至多2^32-1 个字符串. (2)set 常用命令

  8. BZOJ 3105 [CQOI2013]新Nim游戏 ——线性基

    [题目分析] 神奇的题目,两人都可以第一次取走足够多堆的石子. nim游戏的规则是,如果异或和为0,那么就先手必输,否则先手有必胜策略. 所以只需要剩下一群异或和为0就可以了. 先排序,线性基扫一遍即 ...

  9. 分布式缓存技术redis学习系列(一)——redis简介以及linux上的安装

    redis简介 redis是NoSQL(No Only SQL,非关系型数据库)的一种,NoSQL是以Key-Value的形式存储数据.当前主流的分布式缓存技术有redis,memcached,ssd ...

  10. JS省市区三级联动

    不需要访问后台服务器端,不使用Ajax,无刷新,纯JS实现的省市区三级联动. 当省市区数据变动是只需调正js即可. 使用方法: <!DOCTYPE html><html>< ...