第十五章 接口

1、接口: C++中允许多继承没有接口的概念。而java与C#中有,因为C#中 是单继承多接口。

所谓的接口,其实和抽象类、方法相似。都只有一个空方法。其本身不可以为基类,但是允许被其他类继承,而后由其他类或结构实现里面的方法。

2、接口是引用类型

它和继承类似,我们之前可以通过基类的引用的实例化可以访问到派生类当中的方法。在此,我们也可以通过强制转换为接口引用,从而访问实现接口类当中的方法。

interface iifc1

{

void PrintOut(string s);

}

class myclass : iifc1

{

public void PrintOut(string s);

}

{

myclass mc11 = new myclass();

mc11.PrintOut("i lvoe you!");

iifc1 ifc = (iifc1)mc11;//将类对象的引用转换为接口类型的引用。

ifc.PrintOut("i love you!");//调用引用的方法

}

注:实现接口的类可以从它基类继承实现的代码。也就是说,我可以自己不实现,让基类实现也可以。

派生类为继承接口的。

如果两个接口函数里面都有同样的函数需要实现的话,我们可以采用显式接口成员实现。就是 在实现的时候加上接口名 即可。这样不会造成冲突。

interface iifc1

{

void PrintOut(string s);

}

interface iifc2

{

void PrintOut(string s);

}

class myclass : iifc1, iifc2

{

public void iifc1.PrintOut(string s) { }

public void iifc2.PrintOut(string s) { }

}

接口也可以继承接口,不同的类可以实现同一个接口。

第十六章 转换

隐式转换:就是自动转换。

显式转换:就是强制转换。

下面是转换的类型:

我们也可以通过 检测转换结果是否溢出的能力,叫做 溢出检测上下文。

Unchecked(表达式);

对于引用转换:有一点点不一样。

注:从衍生类(派生类)到基类的转换都是隐式转换。

装箱与拆箱:

整个装箱与拆箱的过程如下:

//下面是拆箱与装箱的过程,其实就是通过object为中介,把数据变成可转换的类型。

int i = 10;

object oi = i;//对i装箱并把引用赋值为oi

int ii = (int)oi;//对oi拆箱并把值赋值给ii

用户自定义转换:

通过关键字:implicit 与 explicit 实现。

Public static implicit operator TargetType(SourceType Identifier){ }

两种运算符 : is 与 as

is 主要是用来 检查 从一种类型转换为另一种类型是否会成功。这个有预判效果,事前判断。与unchecked 事后判断不一样。

as 与强制转换类似,假如转换失败,返回null而不抛出异常。

If(bill is Person)

{

P = bill; //这个时候才转换成功。

}

P = bill as Person;

If(p != null)

{

//已经转换成功。

}

C#总结复习5(需要进一步复习)的更多相关文章

  1. C#复习总结6 (需要进一步复习)

    第十七章 泛型 什么是泛型 泛型是为了适应多种不同种类的数据类型而存在的.有了它之后,我们可以不用为不同的数据类型而单独写一个适配.这样很麻烦. 类型不是对象,而是对象的模板.泛型类型也不是类型,而是 ...

  2. 【JS复习笔记】07 复习感想

    好吧,其实<JavaScript语言精粹>后面还简单介绍了代码风格,优美特性,以及包含的毒瘤.糟粕. 但我很快就看完了,发现其实都在前面讲过了,所以就不写了. 至今为止已经算是把JavaS ...

  3. JavaSE复习_11 IO流复习

    △FileReader是使用默认码表读取文件, 如果需要使用指定码表读取, 那么可以使用InputStreamReader(字节流,编码表)    FileWriter是使用默认码表写出文件, 如果需 ...

  4. JavaSE复习_9 集合框架复习

    △列表迭代器也是不支持在迭代的时候添加元素的,只是列表迭代器自己定义了增删的方法而已.迭代器可以看成实在两个元素之间的指针,每当调用next就跳过一个元素并返回刚刚跳过的元素. △HashTable不 ...

  5. 从0开始复习JS---1、函数复习

    1. 写一个函数,实现对数字数组的排序. function get_order(array){ for(var i = 0; i <array.length-1; i++){ for(var j ...

  6. noip初赛复习总纲

    初赛复习总纲 目录 初赛复习总纲 计算机发展史 计算机的分类 计算机的应用 操作系统盘点 计算机的基本结构 中央处理器(**CPU**--**Central Processing Unit**) 存储 ...

  7. HDOJ(HDU) 2078 复习时间

    Problem Description 为了能过个好年,xhd开始复习了,于是每天晚上背着书往教室跑.xhd复习有个习惯,在复习完一门课后,他总是挑一门更简单的课进行复习,而他复习这门课的效率为两门课 ...

  8. 5J - 复习时间

    为了能过个好年,xhd开始复习了,于是每天晚上背着书往教室跑.xhd复习有个习惯,在复习完一门课后,他总是挑一门更简单的课进行复习,而他复习这门课的效率为两门课的难度差的平方,而复习第一门课的效率为1 ...

  9. HDU 2078 复习时间

    http://acm.hdu.edu.cn/showproblem.php?pid=2078 Problem Description 为了能过个好年,xhd开始复习了,于是每天晚上背着书往教室跑.xh ...

随机推荐

  1. (转)iOS完成学习路线

    转自 MJ大神博客 原文地址http://blog.csdn.net/q199109106q/article/details/8596506 晚特地花时间整理出了iOS的完整学习路线图,希望对大家有帮 ...

  2. url编码&&PHP大法&&这个看起来有点简单&&HTML 中有用的字符实体

    URL编码 Url编码通常也被称为百分号编码(Url Encoding,also known as percent-encoding),是因为它的编码方式非常简单,使用%百分号加上两位的字符——012 ...

  3. mysqldump 常见报错及解决

    mysqldump失败案例及解决: 1.mysqldump: Error 2020: Got packet bigger than 'max_allowed_packet' bytes when du ...

  4. 安装altium designer的破解问题

    无法启动此程序,因为计算机中丢失MFC71.DLL.尝试重装安装该程序 百度下搜索下载MFC71.DLL,解压后复制到c:windows/system32/下,在开始-运行下输入regsvr32 MF ...

  5. Leetcode 378.有序矩阵中第k小的元素

    有序矩阵中第k小的元素 给定一个 n x n 矩阵,其中每行和每列元素均按升序排序,找到矩阵中第k小的元素.请注意,它是排序后的第k小元素,而不是第k个元素. 示例: matrix = [ [ 1, ...

  6. “玲珑杯”ACM比赛 Round #19

    A -- A simple math problem Time Limit:2s Memory Limit:128MByte Submissions:1599Solved:270 DESCRIPTIO ...

  7. HDU-5319 Painter,深搜标记!

    Painter 题意:有一个棋盘n行,列数不超过50,用red和blue给这个棋盘涂色,每个格子每种颜色最多涂一次,如果两种颜色都涂了则该格子颜色为Green;red以斜杠'\'方式涂色,bule以' ...

  8. redis介绍和安装(一)

    Redis介绍:redis是一个key-value存储系统. 和Memcached类似,它支持存储的value类型相对更多,包括 string(字符串). list(链表).set(集合).zset( ...

  9. 关于ul中li不对齐的问题

    将li中加入 overflow:hidden;    即可. 同时overflow:auto  可以控制滚动条的出现.

  10. HDU——2444The Accomodation of Students(BFS判二分图+最大匹配裸题)

    The Accomodation of Students Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K ( ...