C#基础之接口(6)
接口的定义:interface。
什么是接口? 接口,我的理解是接口是一种规范。就好比,一个生产数据线的厂商有很多,形状,外观都不一样,现在制定了一个规范那就是所有的数据线生产商都必须把产品外观形状都设计成长方形。这就给定了一个规范。实际上接口也是在处理程序的性能上也是有所考虑。再举一个例子,比如一个员工类,里面定义了字段,方法以及属性。每个人都有自己的独有的部门吧。这时候如果突然加入了一个新员工,那是不是要再重新建一个类设计对应的字段属性部门之类的。这就使得程序很繁琐,在项目开发过程中很容易出错,如果我们把一个部门提出来,定义一个接口,让所有的员工实现这个接口,那是不是这个接口就始终是一个并且每个人都只调用一次。。。实际上接口有分隐式接口调用和显示接口调用。在开发过程中(小型项目)一般应该是隐式接口调用的方法用的比较多,我也是前几天才发现还有显示接口调用的方法,真是才疏学浅,只是学的皮毛,今天就来记录一波。
隐式接口调用:
定义接口(1)
//定义接口
interface IAnimal
{
//定义接口方法,不能有方法体,需要调用此接口去实现其接口
void Name();
}
类继承接口(2)
class AnimalCat : IAnimal
{
//实现接口的方法
public void Name()
{
Console.WriteLine("我的名字是小猫");
}
}
//继承接口
class AnimalDog : IAnimal
{
//实现接口的方法
public void Name()
{
Console.WriteLine("我的名字是小狗");
}
}
隐式调用接口(3)
class Program
{
static void Main(string[] args)
{
/*
* 接口实现的方法有两种:1.隐式、2.显示
*/
//通过类调用,隐式接口实现(小型项目)
Console.WriteLine("---------类调用----------");
AnimalCat cat = new AnimalCat();
AnimalDog dog = new AnimalDog();
cat.Name();
dog.Name(); Console.WriteLine("--------接口调用---------");
//通过接口调用
IAnimal animalcat = new AnimalCat();
IAnimal animaldog = new AnimalDog();
animalcat.Name();
animaldog.Name();
}
}
注:隐式接口实现既可以通过类去调用也可以通过接口去调用。
显示接口:
class AnimalPer : IAnimal
{
//接口自己调用,给定标识
void IAnimal.Name()
{
Console.WriteLine("显示接口调用的实现");
}
}
调用:实际上在调用的过程中,显示接口的调用只能通过接口去调用,如果通过类去调用直接就报错找不到类的方法。。。
class Program
{
static void Main(string[] args)
{
//显示接口实现(只能通过接口调用)
Console.WriteLine("------显示接口实现-------");
IAnimal animalper = new AnimalPer();
animalper.Name();
}
}
如果你想要通过类去调用也不是不可以只不过需要进行一个强制转换的操作:
class Program
{
static void Main(string[] args)
{
Console.WriteLine("------类调用显示接口实现(强制转换)---");
AnimalPer animalpers = new AnimalPer();
// 强制转换
(animalpers as IAnimal).Name();
}
}
执行效果如下图:
C#基础之接口(6)的更多相关文章
- 速战速决 (4) - PHP: 类基础, 抽象类, 接口, trait
[源码下载] 速战速决 (4) - PHP: 类基础, 抽象类, 接口, trait 作者:webabcd 介绍速战速决 之 PHP 类基础 抽象类 接口 trait 示例1.类的相关知识点 1(基础 ...
- [.net 面向对象编程基础] (16) 接口
[.net 面向对象编程基础] (16) 接口 关于“接口”一词,跟我们平常看到的电脑的硬件“接口”意义上是差不多的.拿一台电脑来说,我们从外面,可以看到他的USB接口,COM接口等,那么这些接口的目 ...
- spring中基础核心接口总结
spring中基础核心接口总结理解这几个接口,及其实现类就可以快速了解spring,具体的用法参考其他spring资料 1.BeanFactory最基础最核心的接口重要的实现类有:XmlBeanFac ...
- Go语言基础之接口
Go语言基础之接口 接口(interface)定义了一个对象的行为规范,只定义规范不实现,由具体的对象来实现规范的细节. 接口 接口介绍 在Go语言中接口(interface)是一种类型,一种抽象的类 ...
- C#基础--类/接口/成员修饰符,多态、重载、重写,静态和非静态
C#基础--类/接口/成员修饰符,多态.重载.重写,静态和非静态 类/接口/成员修饰符 C#修饰符---接口: 接口默认访问符是internal接口的成员默认访问修饰符是public C#修饰符--类 ...
- Java基础十--接口
Java基础十--接口 一.接口的定义和实例 /* abstract class AbsDemo { abstract void show1(); abstract void show2(); } 8 ...
- Java基础-面向接口(interface)编程
Java基础-面向接口(interface)编程 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.接口的概念 接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的“类 ...
- GO学习-(14) Go语言基础之接口
Go语言基础之接口 接口(interface)定义了一个对象的行为规范,只定义规范不实现,由具体的对象来实现规范的细节. 接口 接口类型 在Go语言中接口(interface)是一种类型,一种抽象的类 ...
- C#夯实基础之接口(《CLR via C#》读书笔记)
一. 接口的类型 接口是引用类型.因此从值类型赋值给接口是需要装箱的.如下所示: class Program { static void Main(string[] args) { ISay catS ...
- Java基础10 接口的继承与抽象类
链接地址:http://www.cnblogs.com/vamei/archive/2013/03/31/2982240.html 作者:Vamei 出处:http://www.cnblogs.com ...
随机推荐
- Linq 学习——将List集合作为筛选条件查询数据
例: A表是一个List集合,B表也是一个List集合 .A与B有一个共同的字段 RecognitionCarCode B表通过RecognitionCarCode去重后拿到两个值{'1','2'}记 ...
- leetcode c++做题思路和题解(5)——堆的例题和总结
堆和优先队列 堆的简介, 是一种二叉树, 有最大堆和最小堆miniheap. 通常用于构建优先队列. 0. 目录 数据流中的第K大元素 1. 数据流中的第K大元素 数据流中的第K大元素 复杂度为log ...
- 数据结构和算法(Golang实现)(24)排序算法-优先队列及堆排序
优先队列及堆排序 堆排序(Heap Sort)由威尔士-加拿大计算机科学家J. W. J. Williams在1964年发明,它利用了二叉堆(A binary heap)的性质实现了排序,并证明了二叉 ...
- 简单完成Excel导出
Excel的导出只需要三步即可完成: 1,完成excel的工具类编写,直接复制即可 package cn.com.bcl.util; import java.util.List; import org ...
- AJ学IOS(56)网络基础以及如何搭建服务器
AJ分享,必须精品 一:为什么要学习网络编程 关于这个问题,为什么要学习网络编程,AJ的理解就是,这东西是时代发展的必要,没什么为什么,就是应该学,除非你就是想玩单机,但是就算是单机也会有购买金币之类 ...
- AJ学IOS(55)多线程网络之图片下载框架之SDWebImage
AJ分享,必须精品 效果: 代码: - (NSArray *)apps { if (!_apps) { NSArray *dictArray = [NSArray arrayWithContentsO ...
- CentOS7.5 使用Docker部署Jumpserver
1.环境准备 # 查看系统版本 $ cat /etc/redhat-release CentOS Linux release 7.5.1804 (Core) # 查看内核版本 $ uname -a L ...
- Thinking in Java,Fourth Edition(Java 编程思想,第四版)学习笔记(二)之Introduction to Objects
The genesis of the computer revolution was a machine. The genesis of out programming languages thus ...
- L - Neko does Maths CodeForces - 1152C 数论(gcd)
题目大意:输入两个数 a,b,输出一个k使得lcm(a+k,b+k)尽可能的小,如果有多个K,输出最小的. 题解: 假设gcd(a+k,b+k)=z; 那么(a+k)%z=(b+k)%z=0. a%z ...
- EOS基础全家桶(八)jungle测试网的使用
简介 前面我们已经学习了一些EOS的基础知识了,但是在EOS主网上的很多操作(比如:抵押.赎回.买卖内存)都是需要EOS链被正式激活后才可使用,而激活EOS链还需要很多的准备操作,我打算在单独的一篇文 ...