浅谈 接口(Interface)的作用

 继承"基类"跟继承"接口"都能实现某些相同的功能,但有些接口能够完成的功能是只用基类无法实现的
 
1.接口用于描述一组类的公共方法/公共属性. 它不实现任何的方法或属性,只是告诉继承它的类
《至少》要实现哪些功能,继承它的类可以增加自己的方法.

2.使用接口可以使继承它的类: 命名统一/规范,易于维护.比如:  两个类 "狗"和"猫",如果它
们都继承了接口"动物",其中动物里面有个方法Behavior(),那么狗和猫必须得实现Behavior()方法,
并且都命名为Behavior这样就不会出现命名太杂乱的现象.如果命名不是Behavior(),接口会约束
即不按接口约束命名编译不会通过.

3.提供永远的接口。 当类增加时,现有接口方法能够满足继承类中的大多数方法,没必要
  重新给新类设计一组方法,也节省了代码,提高了开发效率.
  举个代码示例:
  
//公共接口: "动物"
  public Interface IAnimal
  ...{
      int EyeNumber;
      private void Behavior();  //行为方法,描述各种动物的特性
  }

  //类: 狗
  public Dog : IAnimal
  ...{
      string ActiveTime = "白天";
      private void Behavior()
      ...{               ...{
         Console.Write("我晚上睡觉,白天活动");
      }
  }

  //类: 猫
  public Cat: IAnimal
  ...{
      string ActiveTime = "夜晚";
      private void Behavior()
      ...{               ...{
         Console.Write("我白天睡觉,晚上活动");
      }
  }


  //简单的应用:
  public static Main()
  ...{
      Dog myDog = new Dog();
      myDog.Behavior();   //输出: "我晚上睡觉,白天活动"
      Cat myCat = new Cat();
      myCat.Behavior();   //输出: "我白天睡觉,晚上活动"
  }
  以上调用不同的类的相同名方法,会输出不同的东东,也就是说每个类里面的同名方法完成的
  功能可以是完全不同的.

 

  更进一步,不是用上面Main方法这样一个一个调用类的方法,用多态性实现其调用.
  看一下下面这个方法:
  public Behavior(IAnimal myIanimal)
  ...{
      myIanimal.Behavior();
  }
  其参数是<<接口类型>>,任何继承它的类都可以调用此方法,此方法能根据类的不同调用不同的类
  中的方法. 也即能够自己根据不同的类,完成不同的类的功能.
  多态性代码示例:  
     Dog myDog = new Dog();
Cat myCat = new Cat();
  Behavior(myDog);  //Behavior接受“狗”类实例
  Behavior(myCat);  //Behavior接受“狗”类实例
  这样Behavior方法写一次就能完成所有继承它的类中的相同名方法的不同功能. 非常方便,

  同样,由于“动物软件”功能需求,需要再增加一个"龟"类:
  //类: 龟
  public Tortoise: IAnimal
  ...{
      string ActiveTime = "很难说";
      private void Behavior()
      ...{               ...{
         Console.Write("我可以不活动,一睡就睡五千年!");
      }
  }
  那么也可以调用上面多态方法,所以说接口使方法具有较好扩展性.
  如果继承它的类很多的话,有多少好处是可想而知的!

  上面是个人对接口某些方面的一些认识,当然接口的作用不只是这些.
  不对的地方请读者批评指正!

相关接口文章,请看:

        http://www.uml.org.cn/j2ee/2004090801.htm

时间: 2024-10-08 02:19:55

浅谈 接口(Interface)的作用的相关文章

浅谈java泛型的作用及其基本概念_java

一.泛型的基本概念 java与c#一样,都存在泛型的概念,及类型的参数化.java中的泛型是在jdk5.0后出现的,但是java中的泛型与C#中的泛型是有本质区别的,首先从集合类型上来说,java 中的ArrayList<Integer>和ArrayList<String>是同一个类型,在编译时会执行类型擦除,及java中的类型是伪泛型,伪泛型将会在后面介绍,其次,对于像集合中添加基本类型的数据时,例如int,会首先将int转化成Integer对象,即我们通常所说的装箱操作,在取出

浅谈Jave枚举的作用与好处_java

枚举是一种规范它规范了参数的形式,这样就可以不用考虑类型的不匹配并且显式的替代了int型参数可能带来的模糊概念 枚举像一个类,又像一个数组. Enum作为Sun全新引进的一个关键字,看起来很象是特殊的class, 它也可以有自己的变量,可以定义自己的方法,可以实现一个或者多个接口. 当我们在声明一个enum类型时,我们应该注意到enum类型有如下的一些特征. 1.它不能有public的构造函数,这样做可以保证客户代码没有办法新建一个enum的实例. 2.所有枚举值都是public , stati

农民伯伯 谈 接口 [interface]

前言      相信大家对接口是不陌生的,但是你真的理解什么是接口吗?真的能用好吗?我们口口声声说按接口编程,到底如何接口编程呢?接口编程的意义在哪呢?...对于接口的迷茫,经常在三层结构里面看到的,千篇一律的把每一个Dao都写一个接口,每个Service再写一个接口,因为他们看的例子就是这样的,网上很多例子都是这样的,这就叫按接口编程了?!心里没底,到下次自己写项目自己设计的时候再加上赶进度怕是没这么勤奋的复制粘贴了,原因还是没有明白接口到底有什么用!甚着感觉接口这玩意就像脱裤子放屁--多此一

浅谈网络推广的作用和前途

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 对于我们广大的站长来说,做网站的技术门槛并不高,通过织梦,帝国等CMS系统很容易就能够制作成非常强大的网站,现在难的是如何将自己的网站进行有效的推广,很多人对网络推广的认识还停留在发帖子,买外链,做广告等,有的人还片面的认为这些推广人员就是一些IT民工,是属于底层的劳动人民,而从事这个行业的人们对于自己的前途也感到非常的渺茫,实际上网络推广不

周大淇:浅谈软文的作用和价值

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 近日我们在各大门户网站经常看到有关"曹操墓发掘"的相关新闻:比如今天2009年1月4日,在新浪国内新闻又有一条的" 专家称曹操墓中1具女尸可能系中毒而亡",咋看起来很突然,但是我们再搜素一下09年的12月份的在新浪网上就会发现其实有很多的相关新闻. 专家称曹操墓石牌折断可能是毁墓所致(04日 11:14

不会SEO照样有流量 浅谈软文的作用

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 一个新站的建立完成了,在经过一系列繁琐的工作后,一个充满新生命力的网站展现在你的面前.经过你的努力,漂亮的网站出来了,作为菜鸟站长的我们心中肯定无限激动,但是一大关键不得不困扰我们--怎样提高流量? 高手肯定会进行SEO优化,使网站在一些关键词搜索中排名靠前,从而获得丰富的流量.但是SEO还是挺难的,作为刚学会建立网站的站长们肯定还不会. 首

浅谈网站首页新闻、top处、foot处对seo的作用

大家好,我是哈尔滨虚实网站网站设计,最近一直在忙着弄服务器和业务的一些事情,很少写点什么了,今天没什么事情写一篇关于首页当中一些细节的处理,希望对大家有所帮助,其实做seo最关键的就是网站细节的处理,细节处理的好坏,直接影响网站的排名,还有如后排名的稳定,前几天写了<浅谈网站首页中公司简介对seo的作用>,这个博文主要就是介绍首页中公司简介对seo的作用,之后很多人问我关于优化的处理,其实seo在首页的处理非常的关键,就是那么几个地方,今天把其他的几个地方都拿出来和大家分享下,希望对新手有所帮

浅谈AndroidManifest.xml与R.java及各个目录的作用

原文:浅谈AndroidManifest.xml与R.java及各个目录的作用 在开发Android项目中,AndroidManifest.xml与R.java是自动生成的.但是对于测试来说,非常重要.经过师父的点拨,我对AndroidManifest.xml与R.java有了更深一层的理解. AndroidManifest.xml会自动生成引用包的属性配置,有权限的管理作用.引用的package必须声明了权限才能使用. R.java是对资源的索引,自动标识资源索引,相当于资源字典,里面包含项目

浅谈php处理后端&amp;接口访问超时的解决方法_php技巧

[HTTP访问] 一般我们访问HTTP方式很多,主要是:curl, socket, file_get_contents() 等方法. 如果碰到对方服务器一直没有响应的时候,我们就悲剧了,很容易把整个服务器搞死,所以在访问http的时候也需要考虑超时的问题. [ CURL 访问HTTP] CURL 是我们常用的一种比较靠谱的访问HTTP协议接口的lib库,性能高,还有一些并发支持的功能等. CURL: curl_setopt($ch, opt) 可以设置一些超时的设置,主要包括: *(重要) CU