C#图解教程学习笔记——接口
一、接口概念
接口是指定一组函数成员而不实现它们的引用类型。所以只能类和结构来实现接口。
二、声明接口
1. 接口声明不能包含:数据成员、静态成员,只能包含以下类型的非静态成员函数:方法、属性、事件、索引器。
2. 接口中函数成员的声明不能包含任何实现代码,只能用分号。
3. 按照惯例,接口名称以大写字母I(Interface)开始。
4. 与类和结构一样,接口声明也可以分部。
5. 接口声明可以有任何的访问修饰符public、protected、internal或private。接口的成员是隐式public的,不允许有任何访问修饰符,包括public。
示例:

三、实现接口
只有类和结构才能实现接口:
1. 如果类实现了接口,它必须实现接口的所有成员。
2. 如果类从基类继承并实现了接口,基类列表中的基类名称必须放在所有接口之前。
示例:

四、使用接口
1. 根据类对象引用获取指向接口的引用:
(1)强制类型转换:如果类没有实现对应的接口,会抛出异常。
示例:

(2)使用as运算符:如果类没有实现对应的接口,返回null。
示例:

2. 类或结构可以实现多个接口:
如果一个类实现了多接口,并且其中有些接口有相同签名和返回类型,这时,类可以实现单个成员来满足所有包含重复成员的接口,也可以为每个接口分离实现,即创建显式接口成员实现。
示例:

3. 如果类实现了多接口,我们可以获取每个接口的独立引用。
4. 实现接口的类可以从它的基类继承实现的代码。
5. 接口可以继承接口。
C#图解教程学习笔记——接口的更多相关文章
- C#图解教程学习笔记——数据类型与数据存储
一.数据类型1. 预定义类型C#提供16种预定义类型,包括13种简单类型和3种非简单类型:(1)简单类型<1>11种数值类型: 不同长度的有符号和无符号整数类型 浮点数的float和dou ...
- C#图解教程学习笔记——转换
一.什么是转换转换(conversion)是指接受一个类型的值并使用它作为另一个类型的等价值的过程.转换后的值应和源值是一样的,但其类型为目标类型. 二.隐式转换和显式转换(强制转换)1. 隐式转换( ...
- C#图解教程学习笔记——方法
一.字段和本地变量.本地常量字段:隶属于类的变量,即类的成员变量.本地变量:于保存本地的或临时的计算数据,即局部变量.本地常量:必须声明在块内部,声明时必须初始化,声明后不能改变.实例字段与本地变量区 ...
- C#图解教程学习笔记——事件
一.事件的定义事件:当一个特定的程序事件发生时,程序的其他部分可以得到该事件已经发生的通知,同时运行相应处理程序.事件的很多部分都与委托类似.实际上,事件就像专门用于特殊用途的简单委托.事件包含了一个 ...
- C#图解教程学习笔记——委托
一.委托概述委托和类一样,是用户自定义类型,也是引用类型.但类表示的是数据和方法的集合,而委托持有一个或多个方法,以及一系列预定义操作. 可以通过以下操作步骤来使用委托:(1)声明一个委托类型.委托声 ...
- C#图解教程学习笔记——类和继承
一.屏蔽基类的成员所有类都派生自object类.虽然类只能直接继承一个基类,但继承的层次没有限制.虽然派生类不能删除它继承的任何成员,但可以用与基类同名的成员来屏蔽(mask)基类成员.1. 要屏蔽一 ...
- C#图解教程学习笔记——类相关的概念
一.一些基本概念1. 字段:隶属于类的变量,即类的成员变量.2. 方法:隶属于类的函数,即类的成员函数.3. 实例成员:类的每个实例拥有自己的各个类成员的副本,这些成员称为实例成员. 改变一个实例字段 ...
- 【C#图解教程学习笔记】第13章 委托
13.1 什么是委托 委托是持有一个或多个方法的对象,可将一个方法传递到另一个方法. 委托是用户自定义的引用类型. 13.2 委托概述 类表示的是数据和方法的集合,而委托持有一个或多个方法,以及一系列 ...
- TypeScript 入门教程学习笔记
TypeScript 入门教程学习笔记 1. 数据类型定义 类型 实例 说明 Number let num: number = 1; 基本类型 String let myName: string = ...
随机推荐
- JZOJ 4743. 积木
Description Input Output Sample Input 38 7 63 9 41 10 5 Sample Output 18
- JZOJ 5835 Prime
Description
- Python基础:输入与输出(I/O)
来做一个NLP任务 步骤为: 1.读取文件: 2.去除所有标点符号和换行符,并把所有大写变成小写: 3.合并相同的词,统计每个词出现的频率,并按照词频从大到小排序: 4.将结果按行输出到文件 out. ...
- 动态规划:HDU-2542-0-1背包问题:饭卡
解题心得: 这题就是一个简单的0-1背包问题,只不过加了一系列的限制.可以想办法消去限制,直接转换成0-1背包问题的模板形式. 需要注意的几个点:首先对于剩余的5元钱的处理可以直接在总的钱数上将5减去 ...
- CART树 python小样例
决策树不断将数据切分成小数据集,直到所有目标变量完全相同,或者数据不能再切分为止,决策时是一种贪心算法,它要在给定的时间内做出最佳选择,但并不关心能否达到最优 树回归 优点:可以对复杂和非线性的数据建 ...
- windows下虚拟环境中配置MySQL-python错误问题
下载mysql 下载mysql-python 这两步基本没有问题怪就怪的 MySQL-python-1.2.3.win-amd64-py2.7 文件只能安装到python27 路径下 然后在虚拟环境 ...
- va_list
void Log( const TCHAR *pszFormat, ... ) { TCHAR buf[] ; va_list arglist ; try { _tcscpy_s ( buf, , _ ...
- IOS开发---菜鸟学习之路--(十七)-利用UITableView实现个人信息界面
首先来看下我们要实现的效果 需要实现这样的效果 然后我们开始动手吧. 首先选择添加一个新的ViewController 然后打开XIB文件,添加一UITableView 并将样式设置为分组 同时将按住 ...
- 34、Java集合框架List,Map,Set等全面介绍(转载)
Java Collections Framework是Java提供的对集合进行定义,操作,和管理的包含一组接口,类的体系结构. Java集合框架的基本接口/类层次结构: java.util.C ...
- python - 接口自动化测试 - GetLog - 日志类封装
# -*- coding:utf-8 -*- ''' @project: ApiAutoTest @author: Jimmy @file: get_logger.py @ide: PyCharm C ...