C# 接口笔记
/* 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# 接口笔记的更多相关文章
- nopCommerce 3.9 接口笔记
接口笔记 Nop.Services.Configuration ISettingService : 配置接口(查看) Nop.Services.Localization ILocalizationSe ...
- cxf方式实现webservice接口笔记
1.配置cxf的jar包依赖: 因maven中央仓库会自带cxf的相关依赖jar,故去maven官网搜索并获取pom配置到本地pom.xml文件即可,maven中央仓库搜索引擎地址:http://se ...
- tornado请求头/状态码/接口 笔记
set_header()/set_default_headers() set_header():设置请求头数据 set_default_headers():设置默认请求头数据 import torna ...
- ApplicationEventMulticaster接口笔记
ApplicationEventMulticaster 这个接口可以管理很多个ApplicationListener对象.并将事件发布给这些监听器. ApplicationEventPublisher ...
- jdk8中几个核心的函数式接口笔记
1. Function接口 /** * function 接口测试 * function 函数只能接受一个参数,要接受两个参数,得使用BiFunction接口 */ public class Func ...
- API接口笔记
1.基类 定义返回信息 protected $user; //用户表 protected $token; //用户token protected $isSuccess = FALSE; //状态是 ...
- drupal7 sql接口笔记
1.查询: execute() ->fetch():从结果集中取出一行作为一个对象 execute() ->fetchField():获取单个值 execute() ->fetchA ...
- i2c接口笔记
一. i2c基础知识 1. NACK信号:当在第9个时钟脉冲的时候SDA线保持高电平,就被定义为NACK信号.Master要么产生STOP条件来放弃这次传输,或者重复START条件来发起一个新的开始. ...
- SQL 笔记 By 华仔
-------------------------------------读书笔记------------------------------- 笔记1-徐 最常用的几种备份方法 笔记2-徐 收缩数据 ...
随机推荐
- svn工具安装下载Tomcat源码以及导入eclipse
安装 1.svn下载地址 https://tortoisesvn.net/downloads.html 2.语言包下载 3.先安装svn,在直接安装语言包 4.桌面右键可以看到相关svn信息 下载To ...
- VR的国内研究现状及发展趋势
转载请声明转载地址:http://www.cnblogs.com/Rodolfo/,违者必究. 一.国内研究现状 我国虚拟现实技术研究起步较晚,与发达国家还有一定的差距. 随着计算机图形学.计算机系统 ...
- LeetCode 372
题目: Your task is to calculate a^b mod 1337 where a is a positive integer and b is an extremely large ...
- 命令大全/cmd/bash
端口占用及强杀 cmd命令 netstat -aon|findstr "8080" #查看占用pid tasklist|findstr "2448" #查看被哪 ...
- 移动APP项目研发流程及版本规划(转)
一个移动APP项目研发规模可大可小,但都离不开以下几个成员:产品经理.ui设计师.前端开发.后端开发.测试等.如何合理安排项目成员工作.确保项目顺利进行呢?一个清晰合理的项目研发流程控制很重要. 项目 ...
- android中四大组件之间相互通信
好久没有写有关android有关的博客了,今天主要来谈一谈android中四大组件.首先,接触android的人,都应该知道android中有四大组件,activity,service,broadca ...
- 2015年ACM长春网络赛(准备做掉7道:已经更新到6道)
总结汇总:模板 int getmax_min(char s[]) {//字符串的最大表示法:返回最小数组下标 , j = , k = ; while(i < len && j & ...
- jquery:closest和parents的主要区别
closest和parents的主要区别是:1,前者从当前元素开始匹配寻找,后者从父元素开始匹配寻找:2,前者逐级向上查找,直到发现匹配的元素后就停止了,后者一直向上查找直到根元素,然后把这些元素放进 ...
- Leetcode Divide Two Integers
Divide two integers without using multiplication, division and mod operator. 不用乘.除.求余操作,返回两整数相除的结果,结 ...
- GridView点击行触发SelectedIndexChanged事件
1.在<% @Page ...... %>指令中添加 EnableEventValidation="false" 2.在RowDataBound事件中添加 protec ...