我最近被继承机制和接口机制的搞得很是糊涂,到底继承和接口之间有什么相同点和不同点……
请大家发表一下自己的看法吧……

解决方案 »

  1.   

    cooljia ,那什么时候需要用的是接口,什么时候用继承呢?
      

  2.   

    楼主应该说的是抽象类和接口的区别,Google一下很多。
      

  3.   

    一个子类只能有一个父类,但可以实现多个接口。
    接口声明的方法都是public abstract类型的。
    接口声明的变量都是public static final类型的。
    最近也在学习继承、接口哈!
      

  4.   

    接口是不同层面的总结,他对方法调用进行控制。
    类是同一层面的总结。
    例如 一个类:人。 从一个层面上讲,人有2条腿,2只手,1个头。这是在一个层面上的语义,所以定义成一个类。接口是不同层面对调用方法约束:
    1.假设再有一个类,鸟。这时可以从另外一个层面来总结类人 和 鸟的相同调用。例如 都是动物,有一个move()方法。这时就可以有一个接口Interface1,来包含这个方法。
    2.如果又有一个新的类,狗,这时又可以从另外一个层面来定义一个新的接口Interface2,该接口包含,是否是哺乳动物的方法。接口重在对方法调用的约束,而类重在数据的重用。
      

  5.   

    谈一下个人感觉:其实楼主的问题提的有些混淆。我没恶意。个人认为接口机制就是一种继承机制(当然是在不考虑具体的技术细节差别的前提下)。为什么这么说呢?java的继承大概有三个层次。继承普通类、继承抽象类和“继承”接口。当某类继承普通类时,完全获得它的非私成员变量和方法。
    当某类继承抽象类时,除了获得抽象类的已实现的成员变量和方法外,还需实现抽象类里没有实现的抽象方法。
    当某类“继承”(实现)接口时,必须完全实现接口里的方法,因为接口里的方法都是“抽象”的,没有实现的。这三个层次下来,“继承”的类要做的事越来越多,而被“继承”类(或接口)做的事越来越少。记得《Think in Java》里有一句话:“接口就是更纯粹的抽象类”。至于什么时候用到接口或普通的继承,这个我没能力说得很清楚。举个例子,你随便看看吧:
    有一个使用接口常见的方式,就是用接口来解耦。
    假设A包里有若干类,B包里有软干类。并且,A包里的类要使用B包的类。怎么做呢?
    一般的做法可能是在A包里加一个接口a,a里有A包要使用的方法(这些方法的功能可由B包的类提供)的签名。在A包里,全部都使用a接口类型的对象。然后,在B包里加一个实现a的类b,这个实现过程会利用B包的类提供功能。然后在程序组装的地方(比如main方法里),把类b的实例传给A包里用到a接口的类(比如通过构造函数)。这就好比继承机制里的多态性。如此A包里完全不知道有B包的存在(A不依赖B),当然,B需要知道有A包的存在(B依赖A)。但这种单向的依赖是可以接受的。以上是我个人的一些理解,还很不全面。如果各位发现其中有误,请直接提出来吧!:)
      

  6.   

    继承是为了解决如下两种问题:
    1. is-a的关系,表示子类“是一个”父类;即子类是父类的一种特殊情况,如猫“是一个”哺乳动物。
    2. 功能上的扩展,表示子类在功能层面上扩展了父类;即子类不但能够完成父类的所有职责,还能够完成更多的一些职责。接口是对类的行为或特点的一种描述:
    即从某个角度理解一个类,这个类应具有哪些行为或者某种特点。如一把尺子从功能的角度去看,它具有丈量的作用;如果从材料的角度去看,它可能是木头的或者金属的。不知道对楼主有帮助没有。我建议楼主在学习这种面向对象的概念时,不要只从代码的角度去看问题,要站在面向对象分析与设计的角度去理解这些概念,相信楼主会对这些概念有进一步的理解。
      

  7.   

       我理解的:
       接口是一种抽象,比如飞机就是一个接口,而实现这个接口的有各种各样的飞机,滑翔机、喷气式等等。但是飞机只是一个统称,而各种各样的飞机就是实际的东西。
       接口就是一个抽象,里面有很多方法,而这些方法需要实现它的接口来实现。
        继承描述的是两个类,一个比如是你爹,一个是你,你有很多地方想你爹,比如眼睛,鼻子等,但是你也有你自己独特的地方,你爹没有的。
        子类继承父类,子类就拥有父类的所有方法属性(private修饰的属性除外),并且子类还有用父类所没有的方法属性。希望对LZ有所帮助