为什么Java可以多继承interface,而不可以多继承class?

 我来答
千古人文
2016-05-16 · TA获得超过388个赞
知道小有建树答主
回答量:233
采纳率:93%
帮助的人:87.6万
展开全部

多继承指一个子类能同时继承于多个父类,从而同时拥有多个父类的特征,但缺点是显著的。

    1.若子类继承的父类中拥有相同的成员变量,子类在引用该变量时将无法判别使用哪个父类的成员变量。如:

 public class classA  // 父类 classA
    {
        private int num = 0;   
    }
    public class classB  // 父类 classB
    {
       private int num = 1;
    }
    public class classC extends classA,classB // 子类 classC 继承于 classA 和 classB
    {
        public static void main(String [] args)
        {
            classC obj = new classC();
            obj.print();    // 调用父类成员变量 num , 那 num 等于 0 还是 1 ?
        } 
        public void print()
        {
            System.out.println(super.num);
        } 
    }

 2.若一个子类继承的多个父类拥有相同方法,同时子类并未覆盖该方法(若覆盖,则直接使用子类中该方法),那么调用该方法时将无法确定调用哪个父类的方法。如:

public class classA // 父类 classA
   {
      public void fun()
      {
           System.out.print("hello");
      } 
   }
    public class classB // 父类 classB
   {
       public void fun()
       {
           System.out.print("hello");
       }
   }
   public class classC extends classA,classB
   {
       public static void main(String [] args)
       {
           classC t = new classC();
           t.print();
       }
       public void print()
       {
           super.fun(); // 调用父类中 fun 方法,但由于classA、classB都有fun()方法,将无法确定使用
                        // 哪个父类中的方法
       }
   }

因此,Java仅允许单继承,即一个子类只能继承于一个父类。但为了拓展子类的功能,Java使用接口以克服不使用多继承带来的不足。

    接口是一个特殊的抽象类,接口中成员变量均默认为 static final 类型,即常量,且接口中的方法都为抽象的,都没有方法体。

    具体方法只能由实现接口的类实现,在调用的时候始终只会调用实现类的方法(不存在歧义),因此不存在 多继承的第二个缺点;而又因为接口只有静态的常量,但是由于静态变量是在编译期决定调用关系的,即使存在一定的冲突也会在编译时提示出错;而引用静态变量一般直接使用类名或接口名,从而避免产生歧义,因此也不存在多继承的第一个缺点。 对于一个接口继承多个父接口的情况也一样不存在这些缺点。

MR__J_A_Y_
2016-05-06 · TA获得超过637个赞
知道小有建树答主
回答量:747
采纳率:50%
帮助的人:287万
展开全部
语法就是这么规定的,没有为啥!C++可以多继承class,语言特性么这都是。多继承类有好处,就是方便,但是方便的同时也会造成不方便,会出现同样的方法在不同类。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yangli0000n
2016-05-07 · 超过31用户采纳过TA的回答
知道答主
回答量:115
采纳率:0%
帮助的人:51万
展开全部
一个是接口;一个是父类;继承接口;你可以实现每一个接口的方法,;父类只有一个,你有几个父亲?;父类的方法可以直接调用和重写
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式