原来接口是这样用的!一个例子搞定接口
2017-08-12 11:34
369 查看
转载:http://www.cnblogs.com/cbcye/archive/2011/05/18/2050173.html
原来接口是这样用的!一个例子搞定接口
接口是面向对像编程里的基础知识了。但不得不承认之前对于接口的认识还是不到位的。记得刚毕业的时候从Asp转向.NET开发,接触了面向对像编程的很多知识。由于自己当时对新的知识非常感兴趣。因此在写代码的时候尽量往这些思想上靠拢。现在打开之前写的代码,看了简直要笑喷了。怪不得当时写完之后心理还想着接口好像没啥用啊。。。还增加不少工作量。
下面就先看看我之前是怎么用接口的吧,以下是我在07年的时候写一个域名Whois信息查询的代码片段.
1.之前知道接口是先要先定义的,而且没有实现。所以我基本上把所有会用到的方法都先用接口定义出来。不想图片太大找了一个方法的代码来打开。
2.知道方法的实现是在类里的,所以下面代码没有问题。就是引用接口并且具体实现方法
3.接口的定义和实现都有了,那么就是实现了。由于第一步就埋下失败的伏笔所以再接下来的使用就成了彻底的杯具了。。
看下图我画的箭头指向的位置,直接实例化类,跟接口没有半毛钱关系。
当时,这样开发下来之后还以为自己用了接口了。但是其实是彻底的没有搞懂。包括前面的定义就出现问题了,也就是不是根据接口的特点及面向对像编程的思想来开发的。直接就是霸王强上弓或者说是把接口当作虎皮膏药到哪都贴。
那么既然说了这么多在使用接口时的错误,怎么才能快速就清楚接口的定义和用法呢?具体概念性的东西不多说了。参考涛哥的文章吧《[你必须知道的.NET] 第二回:对抽象编程:接口和抽象类》,我下面要举的是非常简单的例子(不全面)作为入门人员阅读。 借鉴众多园友的评论我在示例中添加了直接传类的调用
其实就是在接口的使用的时候用接口类型来声明,将接口作为参数类型,这两个基础基础的操作。
我知道在博客园这种地方,首页放这样的文章一定会被无数人鄙视的,但我还是想发到首页。让更多人看看接口是如何使用的。这是一到跨向面向对像编程的鸿沟,让尽量多的人能够快速通过这个鸿沟,通向面向对像编程的大道吧:)
原来接口是这样用的!一个例子搞定接口
接口是面向对像编程里的基础知识了。但不得不承认之前对于接口的认识还是不到位的。记得刚毕业的时候从Asp转向.NET开发,接触了面向对像编程的很多知识。由于自己当时对新的知识非常感兴趣。因此在写代码的时候尽量往这些思想上靠拢。现在打开之前写的代码,看了简直要笑喷了。怪不得当时写完之后心理还想着接口好像没啥用啊。。。还增加不少工作量。
下面就先看看我之前是怎么用接口的吧,以下是我在07年的时候写一个域名Whois信息查询的代码片段.
1.之前知道接口是先要先定义的,而且没有实现。所以我基本上把所有会用到的方法都先用接口定义出来。不想图片太大找了一个方法的代码来打开。
2.知道方法的实现是在类里的,所以下面代码没有问题。就是引用接口并且具体实现方法
3.接口的定义和实现都有了,那么就是实现了。由于第一步就埋下失败的伏笔所以再接下来的使用就成了彻底的杯具了。。
看下图我画的箭头指向的位置,直接实例化类,跟接口没有半毛钱关系。
当时,这样开发下来之后还以为自己用了接口了。但是其实是彻底的没有搞懂。包括前面的定义就出现问题了,也就是不是根据接口的特点及面向对像编程的思想来开发的。直接就是霸王强上弓或者说是把接口当作虎皮膏药到哪都贴。
那么既然说了这么多在使用接口时的错误,怎么才能快速就清楚接口的定义和用法呢?具体概念性的东西不多说了。参考涛哥的文章吧《[你必须知道的.NET] 第二回:对抽象编程:接口和抽象类》,我下面要举的是非常简单的例子(不全面)作为入门人员阅读。 借鉴众多园友的评论我在示例中添加了直接传类的调用
using System; namespace ConsoleApplication4 { //接口 internal interface IMyHandler { void SayHello(); void SayMsg(string msg); } //具体实现类A class MyHandlerA :IMyHandler { public void SayHello() { Console.WriteLine("Hello from MyHandlerA"); } public void SayMsg(string msg) { Console.WriteLine(msg+" from MyHandlerA"); } } //具体实现类B class MyHandlerB : IMyHandler { public void SayHello() { Console.WriteLine("Hello from MyHandlerB"); } public void SayMsg(string msg) { Console.WriteLine(msg + " from MyHandlerB"); } } class Program { static void Main(string[] args) { //实例化A,用接口类型来声明 IMyHandler myHandler = new MyHandlerA(); myHandler.SayHello(); //实例化B myHandler = new MyHandlerB(); myHandler.SayHello(); //传接口 Write(myHandler); //传类A MyHandlerA myHandlerA = new MyHandlerA(); Write(myHandlerA); Console.Read(); } //接口作为参数类型 static void Write(IMyHandler myControl) { myControl.SayMsg("Hello World!!!"); } } }
其实就是在接口的使用的时候用接口类型来声明,将接口作为参数类型,这两个基础基础的操作。
我知道在博客园这种地方,首页放这样的文章一定会被无数人鄙视的,但我还是想发到首页。让更多人看看接口是如何使用的。这是一到跨向面向对像编程的鸿沟,让尽量多的人能够快速通过这个鸿沟,通向面向对像编程的大道吧:)
相关文章推荐
- 原来接口是这样用的!一个例子搞定接口
- 原来接口是这样用的!一个例子搞定接口
- 一个例子将java多态搞定
- 今天的问题:一个简单的例子,请帮我解开“接口实现Java‘隐藏实现细目’”的迷惑。
- 一个大型例子搞定 Javascript 的数组基础知识 ——总结《Javascript 权威指南》第六版数组基础知识
- 做一个饲养员给动物喂食物的例子体现JAVA中的面向对象思想,接口(抽象类)的用处
- 一个体现Java接口及工厂模式优点的例子
- 使用JavaBean创建您的网上日历本 有的朋友曾经说过,如果有一个网上的日记本,或者一个网上的万年历能提醒自己到时去干什么事情就好了。其实呀,这样的日历本您自己也能做一个。不信你看下面的例子: 〈
- 类与接口的一个有趣程序例子
- 一个体现Java接口及工厂模式优点的例子(经典)
- 原来struts2 的data标签还有这样一个特点,惭愧……
- (转)一个体现Java接口及工厂模式优点的例子
- 原来还有这样一个东西,重来不知道过-linux ,ulimit
- 生活中的“返回顶部”原来代码这么简单,一个锚点链接(超链接{a}里的一种)就搞定!
- 一个测试接口加载,类加载很好的例子
- 第二个例子展示了如何使用一个提供单接口的COM对象QueryInterface()函数
- 一个Go语言接口和多操作系统实现的简单例子
- 一个体现Java接口及工厂模式优点的例子
- arcengine 事件接口 的一个例子
- 一个饲养员给动物喂食物的例子体现JAVA中的面向对象思想,接口(抽象类)的用处