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 ...
随机推荐
- 2018蓝桥杯省赛(C/C++ C组)
因进考场不让带优盘,顾想不起有些啥题了,静待更新吧! 再次强调C++最新标准,main函数必须指定返回类型为int,且返回值最好为0(人走的多了就是路了,有人偏返回999那也没办法) 1.大概是小明给 ...
- 安卓开发学习日记 DAY3——TextView,EditView,ImageView
今天学习了一些控件的使用方法,包括TextView,EditView,ImageView 1.TextView,输出一个文本呗 主要属性有 android:id 标志 android:layout_w ...
- JAVA中String和StringBuilder类的特点及使用
转自:https://www.imooc.com/code/2202 仅做个人学习记录之用,侵删! 什么是 Java 中的字符串 在 Java 中,字符串被作为 String 类型的对象处理. Str ...
- JS入门系列(2)-原型-实例属性
下面的例子中,在构造器内部定义了like,然后再原型上也定义了like.通过下面的测试表明: 在构造器内部创建的实例方法会阻挡原型上定义的同名方法 初始化操作的优先级如下: 首先,通过原型给对象实例添 ...
- 选择IT行业的自我心得,希望能帮助到各位!(六)
在这个社会,想做大事的人很多,但是很多事情也挺难做的,为什么说复杂的事情简单做,简单的事情重复做,这样一个人才能获得更多的优越品质,为啥说改变,人还是挺难过的,都知道本性难移,想改挺难得.在这个社会千 ...
- Ansible简明教程
Ansible是当下比较流行的自动化运维工具,可通过SSH协议对远程服务器进行集中化的配置管理.应用部署等,常结合Jenkins来实现自动化部署. 除了Ansible,还有像SaltStack.Fab ...
- stand up meeting 12/3/2015
part 组员 今日工作 工作耗时/h 明日计划 工作耗时/h UI 冯晓云 初始化弹窗的弹出位置并捕捉弹窗区域内的鼠标控制事件,初步解决弹窗的拖拽功能: 6 UWP对控件的支持各种看不懂,属性 ...
- el-tab-pane label的文字内容怎样设间距
el-tab-pane label的文字内容怎样设间距 问题描述: 在使用element-ui的el-tab-pane做标签页时,label属性的位置与样式不能通过style样式直接解决 百度后几乎没 ...
- 爬虫需要登陆怎么办?这份python登陆代码请收下
模拟登陆思路 通过selenium中的webdriver控制浏览器登录目标网站,然后获取模拟登陆需要的Cookie,再利用此Cookie来达到登录的效果.本次我们使用webdriver来驱动火狐浏览器 ...
- 2007 NOIP T1奖学金
奖学金(07NOIPT1): [题目描述] 某小学最近得到了一笔赞助,打算拿出其中一部分为学习成绩优秀的前5名学生发奖学金.期末,每个学生都有3门课的成绩:语文.数学.英语.先按总分从高到低排序,如果 ...