接口的作用(C#)
C#中的接口(Interface)对于很多初学者来说是个很容易迷糊的东西,使用起来很简单,无非就是定义接口,接口里面包含一些属性、索引器、事件和一些没有修饰符的方法,也没有方法的具体实现代码;然后在类中继承该接口,实现该接口中的所有属性、索引器、事件和方法的具体实现的代码(其实接口中只能这几个,一般我们用到的只有属性和方法所以在这里我就只跟大家分享其中的一种“方法”)。接口的使用就这么简单,只要照着去写代码就行了;但没有真正认识到接口的作用的人,都会感觉没有用接口的必要;感觉多此一举,在没真正认识到接口的作用时我也是这么认为的。
微软不会把多此一举的东西推出到市场上,哪么接下来我们就来看看接口的妙处在哪里。
我们先定义一个接口
public Interface IBase
{
void ClassPrind(string s);
}
再定义一个类继承于IBase接口,并且实现方法
public class DogClass :IBase
{
public void ClassPrind(string s)
{
Console.WriteLine(s);
}
}
最后我们在Main里面调用他
class ClassMain
{
statric void Main(string []args)
{
IBase bas=new DogClass();
bas.ClassPrind("小狗");
}
}
输出结果
小狗
单从上面的代码中看起确实多此一举,我们只要实例化DogClass类在去调用ClassPrind方法就行了,没必要多定义一个接口。但是如果我们要再写多一个CatClass类,类里也同样要传入一个参数输出的方法呢?不错我们只要写多一个类,类里写多一个方法就行快的很;但我们在新写的类中的方法名可能会不一样,也就是说我们要多一个方法;这还不算什么,如果这个类和方法你们项目经理是叫别人写的话,你将不知道这个方法,我们使用起来就不方便了。但如果我们使用接口就不同了,虽然也还是要写多一个类和一个方法;但我们只要把这个类继承于接口,再实现他。哪么不管是谁去新增这个类,我们都能准确的找到他,使用他。
我们来加上CatClass这个类
public class CatClass :IBase
{
public void ClassPrind(string s)
{
Console.WriteLine(s);
}
}
再看看调用和输出
class ClassMain
{
statric void Main(string []args)
{
IBase bas=new DogClass();
bas.ClassPrind("小狗");
IBase bas=new CatClass();
bas.ClassPrind("小猫");
}
}
输出结果
小狗
小猫
从调用输出中我们很明显的看出我们只要改个类名、改个参数调用的结果就是别一个类中的方法,我们根本就不用去记别人写的方法名是什么,也不用写这个类的人告诉我们这个类是写来干嘛的。这样我们不管是在团队项目中,还是在个人项目里都很容易的扩展、大大提高了工作效率,我们也不用记住哪么多的东西,何乐而不为呢。
如有不足或写错的地方欢迎指正,谢谢!!!!
接口的作用(C#)的更多相关文章
- java 接口的作用和好处
1.java 接口的作用 http://blog.csdn.net/hack_bug/article/details/7634737 2.一位Java大牛的回答 很多JAVA初级程序员对于接口存在的意 ...
- C#接口的作用(经典)
C#接口是一个让很多初学C#者容易迷糊的东西,用起来好像很简单,定义接口,里面包含方法,但没有方法具体实现的代码,然后在继承该接口的类里面要实现接口的所有方法的代码,但没有真正认识到接口的作用的时候就 ...
- 深入浅出分析C#接口的作用
1.C#接口的作用 :C#接口是一个让很多初学C#者容易迷糊的东西,用起来好像很简单,定义接口,里面包含方法,但没有方法具体实现的代码,然后在继承该接口的类里面要实现接口的所有方法的代码,但没有真正认 ...
- C#接口的作用详解
.C#接口的作用 : C#接口是一个让很多初学C#者容易迷糊的东西,用起来好像很简单,定义接口,里面包含方法,但没有方法具体实现的代码,然后在继承该接口的类里面要实现接口的所有方法的代码,但没有真正认 ...
- C#学习笔记(17)——C#中接口的作用
说明(2017-7-17 23:50:48): 原文: 接口的作用 接口的作用(C#)(另一篇) C#接口是一个让很多初学C#者容易迷糊的东西,用起来好像很简单,定义接口,里面包含方法,但没有方法具体 ...
- 实现serializable接口的作用
最重要的两个原因是: 1.将对象的状态保存在存储媒体中以便可以在以后重新创建出完全相同的副本: 2.按值将对象从一个应用程序域发送至另一个应用程序域. 实现serializable接口的作用是就是可以 ...
- CharSquence 接口的作用,多态以增强String
CharSquence 接口的作用,多态以增强String,CharSquence 可以多态定义 String StringBuffer StringBuilder.
- OpenJDK源码研究笔记(二)-Comparable和Comparator2个接口的作用和区别(一道经典的Java笔试面试题)
Comparable和Comparator是JDK中定义的2个比较接口,很相似,但又有所不同. 这2个接口的作用和区别也是Java中的常见经典面试题. 下面我们就来详细介绍下这2个接口的定义.作用.区 ...
- Cloneable接口的作用与深度克隆与浅度克隆
cloneable接口的作用 cloneable其实就是一个标记接口,只有实现这个接口后,然后在类中重写Object中的clone方法,然后通过类调用clone方法才能克隆成功,如果不实现这个接口,则 ...
随机推荐
- Vue.js学习笔记(二) - 常用模板语法
本篇将在上一篇的基础上记录文本渲染.表达式.过滤器以及常用指令的简单用法. 一.文本渲染 Vue支持动态渲染文本,即在修改属性的同时,实时渲染文本内容.同时为了提高渲染效率,也支持只渲染一次,即第一次 ...
- Java 容器在实际项目中的应用
前言:在java开发中我们离不开集合数组等,在java中有个专有名词:"容器" ,下面会结合Thinking in Java的知识和实际开发中业务场景讲述一下容器在Web项目中的用 ...
- 5个为什么(five-whys)
文章非常好,我认为我们必须实施这一思想. 原文:http://venturehacks.com/articles/five-whys 翻译:http://www.tuicool.com/article ...
- 历年NOIP中的搜索题
什么题目都不会做于是开始做搜索题. 然而我搜索题也不会做了. 铁定没戏的蒟蒻. 1.NOIP2004 虫食算 “对于给定的N进制加法算式,求出N个不同的字母分别代表的数字,使得该加法算式成立.输入数据 ...
- nodejs 构建本地web测试服务器 以及 解决访问静态资源的问题!
直接打开html文件,是以file:///方式打开的,这种方式很多时候会遇到跨域的问题,因此我们一般会搭建一个简易的本地服务器,来运行测试页面. 一.构建静态服务器 1.使用express模块 建立个 ...
- Sublime Text中安装插件来实现px与rem间的换算
今天在群里无意中看到了群友分享的一篇关于移动端的文章.里面其他内容我倒不大感兴趣,反而是rem让我提起了兴趣. 首先来谈一下rem,rem是CSS3中新增加的一个单位值,它和em单位一样,都是一个相对 ...
- spring boot 事件发布与接收
1.创建发布对象 LoginEvent 2.在要发布对象的地方注入 ApplicationEventPublisher @Autowired ApplicationEventPublisher pub ...
- input输入框自动填充黄色背景解决方案
chrome表单自动填充后,input文本框的背景会变成偏黄色的,这是由于chrome会默认给自动填充的input表单加上input:-webkit-autofill私有属性,然后对其赋予以下样式: ...
- MySQL oracle 分页
(1)MySql的Limit m,n语句 Limit后的两个参数中,参数m是起始下标,它从0开始:参数n是返回的记录数.我们需要分页的话指定这两个值即可. 比如:查询10行记录,起始行从3开始 SEL ...
- 新篇章之我的java学习之路上
现在我怀着激动和兴奋的心情来写我的第一篇博客,谈谈我自己的学习java的这段历程. 我大学学的软件工程专业,学校开设过c++,数据结构,java,Android等等这类的关于开发的相关课程,但是在学校 ...