接口的定义: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)的更多相关文章

  1. 速战速决 (4) - PHP: 类基础, 抽象类, 接口, trait

    [源码下载] 速战速决 (4) - PHP: 类基础, 抽象类, 接口, trait 作者:webabcd 介绍速战速决 之 PHP 类基础 抽象类 接口 trait 示例1.类的相关知识点 1(基础 ...

  2. [.net 面向对象编程基础] (16) 接口

    [.net 面向对象编程基础] (16) 接口 关于“接口”一词,跟我们平常看到的电脑的硬件“接口”意义上是差不多的.拿一台电脑来说,我们从外面,可以看到他的USB接口,COM接口等,那么这些接口的目 ...

  3. spring中基础核心接口总结

    spring中基础核心接口总结理解这几个接口,及其实现类就可以快速了解spring,具体的用法参考其他spring资料 1.BeanFactory最基础最核心的接口重要的实现类有:XmlBeanFac ...

  4. Go语言基础之接口

    Go语言基础之接口 接口(interface)定义了一个对象的行为规范,只定义规范不实现,由具体的对象来实现规范的细节. 接口 接口介绍 在Go语言中接口(interface)是一种类型,一种抽象的类 ...

  5. C#基础--类/接口/成员修饰符,多态、重载、重写,静态和非静态

    C#基础--类/接口/成员修饰符,多态.重载.重写,静态和非静态 类/接口/成员修饰符 C#修饰符---接口: 接口默认访问符是internal接口的成员默认访问修饰符是public C#修饰符--类 ...

  6. Java基础十--接口

    Java基础十--接口 一.接口的定义和实例 /* abstract class AbsDemo { abstract void show1(); abstract void show2(); } 8 ...

  7. Java基础-面向接口(interface)编程

    Java基础-面向接口(interface)编程 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.接口的概念 接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的“类 ...

  8. GO学习-(14) Go语言基础之接口

    Go语言基础之接口 接口(interface)定义了一个对象的行为规范,只定义规范不实现,由具体的对象来实现规范的细节. 接口 接口类型 在Go语言中接口(interface)是一种类型,一种抽象的类 ...

  9. C#夯实基础之接口(《CLR via C#》读书笔记)

    一. 接口的类型 接口是引用类型.因此从值类型赋值给接口是需要装箱的.如下所示: class Program { static void Main(string[] args) { ISay catS ...

  10. Java基础10 接口的继承与抽象类

    链接地址:http://www.cnblogs.com/vamei/archive/2013/03/31/2982240.html 作者:Vamei 出处:http://www.cnblogs.com ...

随机推荐

  1. iOS岗位招聘标准水涨船高,五年iOS程序员表示面试太难了

    人才济济的iOS开发者,你凭什么脱颖而出? 与岗位要求相去甚远,如何挑战极限? 想去心怡公司,如何马到成功? 那么,你的绝招是什么呢? 在这个iOS岗位供不应求的市场,对iOS开发者对要求日益增长,面 ...

  2. C语言实现链式队列

    链式队列,简称"链队列",即使用链表实现的队列存储结构. 链式队列的实现思想同顺序队列类似,只需创建两个指针(命名为 top 和 rear)分别指向链表中队列的队头元素和队尾元素, ...

  3. 《深入理解 Java 虚拟机》笔记整理

    正文 一.Java 内存区域与内存溢出异常 1.运行时数据区域 程序计数器:当前线程所执行的字节码的行号指示器.线程私有. Java 虚拟机栈:Java 方法执行的内存模型.线程私有. 本地方法栈:N ...

  4. Volatile可见性分析(一)

    JUC(java.util.concurrent) 进程和线程 进程:后台运行的程序(我们打开的一个软件,就是进程) 线程:轻量级的进程,并且一个进程包含多个线程(同在一个软件内,同时运行窗口,就是线 ...

  5. dubbo(三):负载均衡实现解析

    dubbo作为分布式远程调用框架,要保证的点很多,比如:服务注册与发现.故障转移.高性能通信.负载均衡等等! 负载均衡的目的是为了特定场景下,能够将请求合理地平分到各服务实例上,以便发挥所有机器的叠加 ...

  6. IdentityServer4 QuckStart 授权与自定义Claims

    最近在折腾IdentityServer4,为了简单,直接使用了官方给的QuickStart示例项目作为基础进行搭建.有一说一,为了保护一个API,感觉花费的时间比写一个API还要多. 本文基于ASP. ...

  7. work of 1/5/2016

    part 组员                今日工作              工作耗时/h 明日计划 工作耗时/h    UI 冯晓云 UI页面切换,词本显示下滑条     6 继续下滑条等增删补 ...

  8. django 分页器 Paginator 基础操作

    基于下面这个分页器,说明常用的属性 from django.core.paginator import Paginator #导入Paginator类 from sign.models import ...

  9. Nightmare BFS

    Ignatius had a nightmare last night. He found himself in a labyrinth with a time bomb on him. The la ...

  10. LCA Nearest Common Ancestors (很典型的例题)

    A rooted tree is a well-known data structure in computer science and engineering. An example is show ...