首页 >Java >java教程 > 正文

java没有多继承的原因

原创2019-05-21 11:54:4901296
Java只支持单继承,不允许多重继承,单继承就是一个类只能有一个父类,多继承就是一个类可以有多个父类。

Java可以有多层继承,即一个类可以继承某一个类的子类,如:类B继承了类A,类C又可以继承类B,那么类C也间接继承了类A

子类可以继承父类所有的成员变量和方法,但子类永远无法继承父类的构造方法。在子类的构造方法中可使用语句super(参数列表)调用父类的构造方法。

类定义属性和方法、描述某一类事物的抽象

按照逻辑上来说,单继承更明确 一个子类就应该是其父类代表的事物中的某个更具体的类别,不应该即是这种东西又是那种东西
而从实用角度上来说,单继承易读、易维护、语义清晰、逻辑清楚

多继承造成的问题。钻石危机:

  A foo()
       / \
      /   \
  B foo()   C foo()
      \   /
       \ /
      D foo()

假设类A中有一个public方法fun(),然后类B和类C同时继承了类A,类B或类C中各自对fun()进行了覆盖,这时类D通过多继承同时继承了类B和类C,这样便导致钻石危机了,程序在运行的时候对应方法fun()该如何判断?

class A{
    public void foo(){
    }
}
class B extends A{
    public void foo(){
    }
}
class C extends A{
    public void foo(){
    }
}
//Not allowed here.
public class D extends B, C{
    public void foo(){
    }
}

(1)如果在一个子类继承的多个父类中拥有相同名字的实例变量,子类在引用该变量时将产生歧义,无法判断应该使用哪个父类的变量。

(2)如果在一个子类继承的多个父类中拥有相同方法,子类中有没有覆盖该方法,那么调用该方法时将产生歧义,无法判断应该调用哪个父类的方法。

以上就是java没有多继承的原因的详细内容,更多请关注php中文网其它相关文章!

php中文网最新课程二维码

声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理

  • 相关标签:Java 多继承
  • 相关文章

    相关视频


    网友评论

    文明上网理性发言,请遵守 新闻评论服务协议

    我要评论
  • 专题推荐

    作者信息
    推荐视频教程
  • 马士兵JAVA坦克游戏视频教程马士兵JAVA坦克游戏视频教程
  • 尚学堂java开发聊天室视频教程尚学堂java开发聊天室视频教程
  • 魔乐科技java五子棋视频教程魔乐科技java五子棋视频教程
  • 最新Java完整视频教程最新Java完整视频教程
  • 视频教程分类