C# 浅谈接口的优势
总结了一下接口的小优势,可以便于新手理解为什么要用接口,用接口有什么好处。
1.接口的定义:
关键字:interface,接口名一般大写I开头,接口中定义方法,但是不实现方法
interface IBark{ void Bark(); }
2.实现接口:
父类名在前,接口名在后,只能继承一个父类,可以实现多个
interface IBark
{
void Bark();//接口中字段和方法默认为public
} class Dog: IBark
{
public Dog{ }
public void Bark()// 方法声明必须和接口中的保持一致
{
Console.WriteLine("汪汪");
}
}
这时我们实例化一个dog
Dog wangcai = new Dog();
wangcai.Brak();
旺财就会汪汪了。
之前我也不明白为什么不直接在Dog类中声明Bark的方法,IBark接口中并没有具体的方法,还省略了接口,没有理解接口的作用。
还有人是这样说的:从接口的定义方面来说,接口其实就是类和类之间的一种协定,一种约束。还拿上面的例子来说,所有继承了IBark接口的类中必需实现 Bark()方法,那么从用户(使用类的用户)的角度来说,如果他知道了某个类是继承于IBark接口,那么他就可以放心大胆的调用Bark()方法,而不用管Bark()方法具体是如何实现的。比如,我们另外写了一个类。
把上面的那个例子扩展,现在需要写一个猫的类。
public class Cat : IBark
{
public Cat()
{ }
public void Bark()
{
Console.WriteLine("喵喵");
}
总结:
我们在写猫的类的时候,继承了IBark接口,知道猫类中肯定会有一个Bark方法需要我们去实现。接口的优势在多个类中就体现出来了。如果一个项目,需要些猫、狗、鸡、鸭、多个类,又是由多个人来写,这些类都需要实现一个Bark的方法,我们就可以使用IBark接口,加强他们之间的约束,方便统一管理也方便调用。
而且如果一个项目中,有c,有c++、JAVA、C#的程序员的时候,使用接口,扩充性特别好。
C# 浅谈接口的优势的更多相关文章
- Rommel - C# 浅谈 接口(Interface)的作用
鉴于网上太多太多的对C# 接口的误解,想来想去还是自己做一个完美的接口 篇章 继承"基类"跟继承"接口"都能实现某些相同的功能,但有些接口能够完成的功能是只用基 ...
- C# 浅谈 接口(Interface)的作用
继承"基类"跟继承"接口"都能实现某些相同的功能,但有些接口能够完成的功能是只用基类无法实现的 1.接口用于描述一组类的公共方法/公共属性. 它不实现任何的方法 ...
- Java基础之浅谈接口
前言 前几篇文章我们已经把Java的封装.继承.多态学习完了,现在我们开始比较便于我们实际操作的学习,虽然它也是Java基础部分,但是其实入门容易,精通很难. 我认真的给大家整理了一下这些必须学会.了 ...
- 【WebApi系列】浅谈HTTP
[01]浅谈HTTP在WebApi开发中的运用 [02]聊聊WebApi体系结构 [03]详解WebApi如何传递参数 [04]详解WebApi测试和PostMan [05]浅谈WebApi Core ...
- 【WebApi系列】浅谈HTTP在WebApi开发中的运用
WebApi系列文章 [01]浅谈HTTP在WebApi开发中的运用 [02]聊聊WebApi体系结构 [03]详解WebApi参数的传递 [04]详解WebApi测试和PostMan [05]浅谈W ...
- 示例浅谈PHP与手机APP开发,即API接口开发
示例浅谈PHP与手机APP开发,即API接口开发 API(Application Programming Interface,应用程序接口)架构,已经成为目前互联网产品开发中常见的软件架构模式,并且诞 ...
- 浅谈Java中接口与抽象类的异同
浅谈Java中接口与抽象类的异同 抽象类和接口这两个概念困扰了我许久,在我看来,接口与抽象类真的十分相似.期间也曾找过许许多多的资料,参考了各路大神的见解,也只能是简简单单地在语法上懂得两者的区别.硬 ...
- 浅谈Android系统进程间通信(IPC)机制Binder中的Server和Client获得Service Manager接口之路
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6627260 在前面一篇文章浅谈Service ...
- MySql主从配置实践及其优势浅谈
MySql主从配置实践及其优势浅谈 1.增加两个MySQL,我将C:\xampp\mysql下的MYSQL复制了一份,放到D:\Mysql2\Mysql5.1 修改my.ini(linux下应该是my ...
随机推荐
- post数据
http://cnodejs.org/topic/4f16442ccae1f4aa2700104d http://www.cnblogs.com/pingfan1990/p/4701355.html ...
- commonjs amd cmd的区别
一篇博客告诉你三者的区别:http://zccst.iteye.com/blog/2215317 告诉你三者同requirejs seajs的区别:http://blog.chinaunix.net/ ...
- css渐变
常这样去定义一个渐变的div: 渐变1:(双色) background: -moz-linear-gradient(top, #456d6c %, #32b66a %); %,#456d6c), co ...
- JavaScript基础---语言基础(4)
函数,对象和数组 学习要点: 1.函数声明 2.return返回值 3.arguments对象 4.Object类型 5.Array类型 6.对象中的方法 函数是定义一次但却可以调用或执行任意多次的一 ...
- HTML5——多次定位请求
多次定位请求及点击一次 就不断的触发请求事件,和单次定位请求写法差不多,只需要将 navigator.geolocation.getCurrentPosition改为navigator.geoloca ...
- 第五次课堂总结x
一.知识点: 1.while语句 循环体语句: while语句里的表达式可以是任何合法的表达式,循环体则只可以表达一条语句. while的循环体语句需要能改变循环条件的真假条件. ...
- IOS 遍历未知对象的属性和方法
/* 注意:要先导入ObjectC运行时头文件,以便调用runtime中的方法*/ #import <objc/runtime.h> @implementation NSObject (P ...
- 每天一个linux命令(9):nl命令
nl命令在linux系统中用来计算文件中行号.nl 可以将输出的文件内容自动的加上行号!其默认的结果与 cat -n 有点不太一样, nl 可以将行号做比较多的显示设计,包括位数与是否自动补齐 0 等 ...
- iOS不得姐项目--appearance的妙用,再一次设置导航栏返回按钮,导航栏左右按钮的封装(巧用分类)
一.UI_APPEARANCE_SELECTOR 彩票项目中appearance的用法一直没有搞明白,这次通过第二个项目中老师的讲解,更深一层次的了解到了很多关于appearance的作用以及使用方法 ...
- BZOJ-4424 &&CodeForces-19E Fairy DP+dfs (Link-Cut-Tree可A)
Va爷的胡策题T2 E. Fairy time limit per test1.5 seconds memory limit per test256 megabytes inputstandard i ...