如果你的类的结构体系中,某一个类要扩充功能怎么办?你不能去修改它的超类吧,因为一般而言,它的超类还有超类呢。
(而且如果你使用别人提供的类,根本就不可能去修改它)也许你要一直追溯到Object都不行。可是使用接口,
你想给这个体系中的某个类扩充功能,
只需要给这个类实现一个新的接口,自然就会提供新的功能,
丝毫不会影响它的超类,
而它的子类自动也扩充了它新增加的这个接口的方法(有点象C++多继承)。这使的软件的功能扩展变得更容易。设计模式中有一条开闭原则,
说:软件实体必须都修改关闭,对扩展开放。使用接口,就可以满足这样的设计要求。

解决方案 »

  1.   

    突然悟了,  :)  5555
      
     "如果你的类的结构体系中,某一个类要扩充功能怎么办?
     你不能去修改它的超类吧,因为一般而言,它的超类还有超类呢。"  接口是什么? 就是一个面,对于一个类而言; 它可能有很多的功能; 但是,我们要使用的就是其中的一部分; 那么开一个接口,把服务提供,把实现封装;  一个对象可以实现多个接口;  感觉有了!!!!! 哈哈
      但是问题跟着来了?  系统分析过程中,我们很容易发现接口;但是一系列的接口是否就决定了对象; 或者接着如何得到对象?  java中interface和class是分离的?  5555: 是否说设计只要接口,不用考虑对象; 因为对象只是接口的实现;
      感觉不对呀?????????  
      

  2.   

    这是设计模式里的东西,我正想学,从两个方面考虑:易于维护和易于复用
    接口就好比电源插座,Class好比就是电器,
    我们不管是什么电器,只要都实现了电源插座的接口,
    当我们想看电视的时候就把电视的插头插上去,
    当我们想上网,把电脑插头插上去.
    .....
    如果我们没有规定接口,谁都实现自己的独立对外接口,
    我们可以想象:
    当我们要看电视的时候,我们去接一条专用插座,然后接上电视里;
    当我们再要去上网时,我们把电视专用插座拆了,再换上电脑专用的插座,再连上去,
    .....................
    当然第一种好了.
      

  3.   

    to LiGun:
     
      我们来这里讨论就是谈谈自己的理解,相互学习;
      
      只是看书,还只是一个人的理解.  最近在看,设计模式  c++对象模型  c++编程思想
      

  4.   

    更正一下java不支持多重继承,借口是为了完成不同的功能,接口是抽象的没有函数体,一般很少用
      

  5.   

    抛开java讲,一个类的所有方法的某部分相关操作的集合就是该类的一个接口,接口的概念是面向对象理论的一个概念。这也是现实世界对应,比如一个人是个经理又是个球迷,他所有有关经理的操作集合就是一个“经理”接口,有关球迷的操作就是一个“球迷”接口。很多面向对象在语言级别上没有接口这个概念,而使用抽象类来做这项功能,造成了概念上的混乱。而java就在语言的级别上就提供了接口这个概念。
      

  6.   

    to songsd:
      悟,5555  :0
     
       接口就是class的一个面; 一个class可以有多个面;  
      这么说,interface与class有本质的不同; 但是,c++中没有把两者给分开;   
      

  7.   

    我刚刚接触JAVA,有个很菜的问题,就是对前面jtzwm所说的“
    如果你的类的结构体系中,某一个类要扩充功能怎么办?
    你不能去修改它的超类吧,因为一般而言,它的超类还有超类呢。”,不理解,如果我要扩充某个类A的功能,我为什么要修改超类呢,我直接修改A不就可以吗,而且A的子类也可使用这些扩充的功能啊,为什么一定要用接口啊
      

  8.   

    http://expert.csdn.net/Expert/topic/1363/1363621.xml?temp=.3828852请大家去接着讨论..这里先给分