一个经典的例子比如说楼主你吧^_^,你将继承People这个类,因为你 is a people,但是在许多人眼里,你有不同的角色,有不同的行为,所以,你将实现这些行为的接口。

解决方案 »

  1.   

    interface someInf{
                    void f();
              }
             class A extends JOOP implements someInf{
                 // use fuction in JOOP
                 void f(){ do something};
              }
        上面的形式能给我们带来什么好处呢?因为它完全可以实现如下,
             abstract someInf{
                    void f();
              }
             class A extends someInf{
                 JOOP jop = new JOOP();
                 // use fuction in JOOP
                 void f(){ do something};
              }
    ==========================================================================
    继承一个类和将一个类作为自己的一个成员是不一样的,访问限制上首先就不一样。对于extends ,我们可以访问的权限要比在类里面声明一个类要大。而且接口也是为了规范化。我也是菜鸟,说的错了,请大家指正。
      

  2.   

    interface someInf{
                    void f();
              }
             class A extends JOOP implements someInf{
                 // use fuction in JOOP
                 void f(){ do something};
              }
        上面的形式能给我们带来什么好处呢?因为它完全可以实现如下,
             abstract someInf{
                    void f();
              }
             class A extends someInf{
                 JOOP jop = new JOOP();
                 // use fuction in JOOP
                 void f(){ do something};
              }
    ---------------------------------------------------------------------
    这个例子过于简单,没有什么可比性;
    如果抽象类中不只是有一个方法void f(),还有其他很多的方法,使用抽象类的子类就可以覆盖其中的某一个或几个方法;
    但对于接口来说,如果接口中不只是有一个方法void f(),还有其他很多的方法,实现了这个接口的类就必须重载接口中所有的方法;
    对于接口而言,如果你新增了一个方法,那你实现这个接口所有的类都必须重新重载这个方法;而抽象类则不受此限制。
      

  3.   


     如果类A需要继承多个接口怎样处理?
    另外,你的这个结构把继承关系改变了,
    原来的A是继承于JOOP的,
    你修改过的A是继承于someInf的。你确定这样没有问题?
    如果我的确需要A继承于JOOP怎么办?打个比方,
      class 人 {
      };  interface 经理 {
      };
      interface 技术部 {
      };  那么
    class 技术部经理 extends 人 implements 技术部 , 经理{
              }
    是很合乎逻辑的。按照你的架构应该如何处理呢?
    按你的架构,class 技术部经理会成为:
    class 技术部经理 extends 技术部 implements 经理{
        人 man = new 人();
              }
    或者
    class 技术部经理 extends 经理 implements 技术部{
        人 man = new 人();
              }
    假如有一个函数
     int func(人 man){
      } 那么该func就不能作用于一个技术部经理的类,因为技术部经理包含一个人,但技术部经理不是人……
     汗……
      

  4.   

    drinkant(喝酒的蚂蚁) ,哈哈,我说话霸道吗?拜托你不要闲扯好不好,我只是想学习,不过还是要谢你帮我顶一下。
      

  5.   

    windindance(风舞轻扬),感谢你在此亦有回复