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 ...
随机推荐
- String 对象-->lastIndexOf() 方法
1.定义和用法 lastIndexOf() 方法可返回一个指定的字符串值最后出现的位置,如果指定第二个参数 start,则在一个字符串中的指定位置从后向前搜索. 语法: string.lastInde ...
- Python设计模式(7)-建造者模式
# coding=utf-8 class Report: def create_head(self): pass def create_body(self): pass class year_Repo ...
- 一个hql 关键字member(非mysql)引起的 vo 数据 保存数据库错误
2015-03-19 14:16:29,285 ERROR [Thread-3] (DAOHelper.java:312) - updateByEntityPK:com.agileeagle.dao. ...
- 通过String的不变性案例分析Java变量的可变性
阅读本文之前,请先看以下几个问题: 1.String变量是什么不变?final修饰变量时的不变性指的又是什么不变,是引用?还是内存地址?还是值? 2.java对象进行重赋值或者改变属性时在内存中是如何 ...
- Performance standard (ALPHA release) 12/17/2015
===================ALPHA RELEASE STANDARD====================== 1. Parallel performance test: The Nu ...
- 关于MIME类型问题,浏览器请求到的资源是乱码
简介 我想很多同学都可能会遇到这样的问题,调用后台提共的静态资源服务api时,用浏览器打开发现却是一堆乱码.需要的是 JSON, 拿到的却是 xml,访问一个mp4的文件,浏览器直接下载.这一切的来源 ...
- selenium 键盘鼠标模拟
一.键盘模拟常用的键 sendKeys(Keys.BACK_SPACE); //删除键--Backspace sendKeys(Keys.SPACE); //空格键 Space sendKeys ...
- sql注入原理+mysql相关知识点
什么是SQL注入 sql就是经常说的数据库,而sql注入就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.SQL注入是比较常见的网络攻击 ...
- php静态变量的销毁
什么都不说,先上代码: public function _childrenids($data,$cate_id,$clear=false) { static $arr = array(); if ($ ...
- SESSION劫持
服务端和客户端之间是通过session(会话)来连接沟通.当客户端的浏览器连接到服务器后,服务器就会建立一个该用户的session.每个用户的session都是独立的,并且由服务器来维护.每个用户的s ...