C# 面向对象之面向接口
接口的定义
与类不同的是接口用interface关键字
(1)接口中所有成员不能添加任何修饰符,默认为public,如果显示指定修饰符将会出现编译错误;
(2)接口中不能包含字段、运算符重载、实例构造函数和析构函数;
接口的继承
(1)类继承接口与类继承类是一样的,都使用: 继承多个接口后面用,分开;
class Test:IA,IB
{}
调用接口中的方法和隐式显式接口实现方式
(1)显式实现接口方法不能使用任何修饰符显式实现的成员都默认为私有
(2)采用隐式实现接口时类与接口都能访问接口中的方法;而采用显式实现接口时接口方法只能通过接口去访问,因此此时接口方法默认为私有的
(3)继承多个接口时显式的实现接口解决了命名冲突问题,这样能标识出那个方法属于那个接口
隐式:
using System;
namespace TestApplication
{
class Test
{
static void Main(string[] args)
{
IChinese Chinesespeak=new Speakers();
IEnglish Englishspeak=new Speakers();
Chinesespeak.speak();
Englishspeak.speak();
Console.ReadKey();
}
}
interface IChinese
{
void speak();
}
interface IEnglish
{
void speak();
}
class Speakers:IChinese,IEnglish
{
public void speak()
{
Console.WriteLine("Chinese");
}
}
}
运行结果为

显式:
using System;
namespace TestApplication
{
class Test
{
static void Main(string[] args)
{
IChinese Chinesespeak=new Speakers();
IEnglish Englishspeak=new Speakers();
Chinesespeak.speak();
Englishspeak.speak();
Console.ReadKey();
}
}
interface IChinese
{
void speak();
}
interface IEnglish
{
void speak();
}
class Speakers:IChinese,IEnglish
{
void IChinese.speak()
{
Console.WriteLine("Chinese");
}
void IEnglish.speak()
{
Console.WriteLine("English");
}
}
}
运行结果:

C# 面向对象之面向接口的更多相关文章
- 2018/2/14 设计模式学习笔记(一) 自己实现ArrayList,LinkedList和Iterator,以及在此过程中对于面向对象,面向接口,还有抽象类的一些思考感悟
因为本人目前为止学习编程不过七个月,所以后面的感悟对于一些大神来说可能嗤之以鼻,但对于一些刚刚入门的萌新来说在理解面向对象的思想上,以及抽象类和接口应该怎么设计等方面应该还是会有所帮助的 首先我们定义 ...
- 【GoLang】golang 面向对象编程 & 面向接口编程
005.面向对象&接口编程 1 面向函数编程 1.1 将数据作为参数传递到函数入参 1.2 对象与函数是分离的 2 面向对象编程 2.1 使用者看起来函数作为对象的属性而非参数 2.2 函数属 ...
- 【java初学者】理解,从面向过程 到 面向对象,面向接口,面向切面
http://blog.csdn.net/ssh159/article/details/52516986
- go 学习笔记之万万没想到宠物店竟然催生出面向接口编程?
到底是要猫还是要狗 在上篇文章中,我们编撰了一则简短的小故事用于讲解了什么是面向对象的继承特性以及 Go 语言是如何实现这种继承语义的,这一节我们将继续探讨新的场景,希望能顺便讲解面向对象的接口概念. ...
- 面向过程(POP)、面向对象(OOP)、面向接口(IOP)、面向切面(AOP)
面向过程:典型的是C/C++的结构体,结构体里只有变量,没有处理变量的方法,需要专门编写处理变量的方法. 面向对象:ArrayList<Integer> list=new ArrayLis ...
- Asp.net 面向接口可扩展框架之类型转化基础服务
新框架正在逐步完善,可喜可贺的是基础服务部分初具模样了,给大家分享一下 由于基础服务涉及面太广,也没开发完,这篇只介绍其中的类型转化部分,命名为类型转化基础服务,其实就是基础服务模块的类型转化子模块 ...
- Asp.net 面向接口可扩展框架之核心容器(含测试代码下载)
新框架的容器部分终于调通了!容器实在太重要了,所以有用了一个名词叫“核心容器”. 容器为什么那么重要呢?这个有必要好好说道说道. 1.首先我们从框架名称面向接口编程说起,什么是面向接口编程?(这个度娘 ...
- Java设计原则:面向接口的设计
前言:在一个面向对象的系统中,系统的各种功能是由许许多多的不同对象协作完成的.在这种情况下,各个对象内部是如何实现对系统设计人员来说就不那么重要:而各个对象之间的协作关系则成为系统设计的关键.小到不同 ...
- javascript设计模式学习之十七——程序设计原则与面向接口编程
一.编程设计原则 1)单一职责原则(SRP): 这里的职责是指“引起变化的原因”:单一职责原则体现为:一个对象(方法)只做一件事. 事实上,未必要在任何时候都一成不变地遵守原则,实际开发中,因为种种原 ...
随机推荐
- MongoDB 倾向于将数据都放在一个 Collection 下吗?
不是这样的. Collection 的单个 doc 有大小上限,现在是 16MB,这就使得你不可能把所有东西都揉到一个 collection 里.而且如果 collection 结构过于复杂,既会影响 ...
- Appnium安装-Mac平台
Appium的安装-MAC平台 其实Appium的安装方式主要有两种: 1)自己安装配置nodejs的环境,然后通过npm进行appium的安装 2)直接下载官网提供的dmg进行安装,dmg里面已 ...
- 使用单例模式设计PDO数据操作类
<?php /** * MyPDO * @author LHL <506698615@qq.com> * @date 2016.04.20 */ class MyPDO{ prote ...
- Tomcat之catalina.out日志分割
可参考:http://meiling.blog.51cto.com/6220221/1911769 本人尚未验证.
- lvs+keepalived+nginx高性能负载均衡集群
项目发布时候,别人还能访问呢? 双机主从热备 LVS作用 LVS是一个开源的软件,可以实现传输层四层负载均衡.LVS是Linux Virtual Server的缩写,意思是Linux虚拟服务器.目前有 ...
- win8系统在安装软件时安装framework3.5失败的解决办法
win8系统在,许多软件都需求安装framework3.5,但是很多用户都是安装失败,联网失败,据网上的许多人说有用cmd输入命令,然后到100%,就会成功安装framework3.5(如这个方法:w ...
- 记录下 hubot相关
适配器工厂https://hubot.github.com/docs/adapters/ 自己写适配器https://hubot.github.com/docs/adapters/developmen ...
- Normalize.css 与传统的 CSS Reset 有哪些区别?
CSS Reset 是革命党,CSS Reset 里最激进那一派提倡不管你小子有用没用,通通给我脱了那身衣服,凭什么你 body 出生就穿一圈 margin,凭什么你姓 h 的比别人吃得胖,凭什么你 ...
- Java中的final和static
final final可以用在类.方法.变量上. 1.final用在类上,表明当前类它不能被继承,没有子类. 2.final用在方法上,表明当前方法不能被override,不能被重写. 3.final ...
- bootstrap 学习笔记(3)---- 代码
这节讲的是代码: 1.基本实例 <code></code> <pre></pre> <kbd></kbd> 应用如下 1.Fo ...