Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何解释Java中的多重继承_Java - Fatal编程技术网

如何解释Java中的多重继承

如何解释Java中的多重继承,java,Java,事实上,这个问题是由一位面试官提出的 Que:你怎么能说java不支持多重继承? 如果对象类是java中所有类的父类 这个问题我没有答案 这意味着对java概念没有清晰的认识:-( 例: 如果A扩展B 这里已经有一个扩展对象类了,对吗? 现在它是如何工作的 请分享您的答案。多重继承是指单个类可以从多个类扩展而来。这在java中是不可能的。请参见此处: 当您在Java中执行class A扩展B时,那么A只扩展B,而不是Object,B依次扩展对象(或任何其他最终将扩展对象的对象)多重继承应允许一个

事实上,这个问题是由一位面试官提出的

Que:你怎么能说java不支持多重继承? 如果对象类是java中所有类的父类

这个问题我没有答案

这意味着对java概念没有清晰的认识:-(

例: 如果A扩展B

这里已经有一个扩展对象类了,对吗? 现在它是如何工作的


请分享您的答案。

多重继承是指单个类可以从多个类扩展而来。这在java中是不可能的。请参见此处:


当您在Java中执行
class A扩展B
时,那么
A
只扩展
B
,而不是
Object
B
依次扩展
对象(或任何其他最终将扩展对象的对象)

多重继承应允许一个类继承多个父类。但Java不允许这样做,因为它可能会创建

考虑到
对象
类是父类,然后在继承层次结构中有许多类,它被称为

旁注:


C#允许子类单独实现多个父类的方法,即使它们具有相同的签名

多重继承意味着单个类可以从多个类继承。换句话说,它可以有多个父类

对于面试官引用的
对象
类示例,有两种可能性:

  • 面试官自己对多重父类(多重继承)和多重子类感到困惑

  • 或者他想用这个问题欺骗你

  • 父类可以有许多子类,这些子类与多重继承无关。

    请参考以下内容:


    在对象类与其他类的情况下,它实际上不是多重继承……正如所说,它是一个类可以从多个类扩展而来的地方。

    java中多重继承的唯一相似之处是接口。 一个类可以实现多个接口


    对象
    类不是多重继承的示例。可能是您误解了这个问题。

    看看这个答案:

    您的类扩展了另一个类,但它也扩展了对象,所以您仍然处于一行继承中,而不是两行继承中


    最重要的是保持语言设计简单

    还有我经常遵循的例子

    1) 我们有两个类BC继承自A

    2) 假设BC覆盖了一个继承的方法,它们提供了自己的实现

    3) 现在D继承了BC的多重继承D应继承该重写方法,将使用哪个重写方法?它是从B还是从C

    这里我们有一个模棱两可的地方

    要克服这一点,我们有接口多级继承

    编辑:

    And here A is already extending Object class.
    
    它从来没有被称为
    多重继承
    。它被称为
    多级继承。

    在多层次上,


    继承涉及许多类,但一个类只扩展一个
    。最低的
    子类
    可以使用其所有的
    超类
    ”内容。

    java类只能是单个父类的直接子类。它可以有祖父母,但没有第二个父母。
    这就像有一个单亲亲生母亲。你不能有一个以上的亲生母亲,当然你可以有一个祖母。

    让我们分为a类和B类。 现在我们定义一个派生类。 多重继承意味着:派生类可以同时继承类A和类B。
    但这在Java中是不可能的。因此它不支持多重继承。

    答案是Java支持多级继承,但不支持多重继承

    这是对Java的常见误解

    多重继承的工作方式(C++和Python)是这样的。

    Parent1    Parent2    Parent3
       |          |          |
       _______________________
                  |
                  v
                Child
    
      Object
        |
        v
      Child1
        |
        v
      Grandchild
    
    这意味着
    Child
    将从所有父级继承属性和方法

    然而,在Java中,继承是这样工作的

    Parent1    Parent2    Parent3
       |          |          |
       _______________________
                  |
                  v
                Child
    
      Object
        |
        v
      Child1
        |
        v
      Grandchild
    
    因此,对象是所有类的超类,但它不是所有类的直接父类。然而,Java确实提供了一种通过
    接口

    Object
      |
      v
    Child   <---  Interface
      |
      v
    Grandchild
    
    对象
    |
    v
    小孩
    问:你怎么能说java不支持多重继承?如果对象类是java中所有类的父类


    对象是所有类(父类、祖父类、曾祖父类等)的祖先,但每个类只有一个父类(如果未指定,则为对象类)。

    第一种情况:假设您在不使用继承的情况下创建类a。默认情况下,它是从对象类派生的

    第二种情况:假设您创建了扩展类A的类B。类A包含来自对象类的所有字段,因此类B也将通过继承包含这些字段。它是
    类B扩展了A(它扩展了对象)
    ,所以可以说B是A的子类,也是对象的子类。

    多重继承是关于多重直接继承的

    单个类不能有两个直接父类。不过,它可以有一个祖父母班

    A扩展B
    B扩展C
    ,与
    A同时扩展B和C
    不同

    不允许这样做的原因是,当您遇到以下情况时,为了简单起见:

    A extends both B and C
    
    B extends D
    
    C extends D
    
    如果您有这样的案例,然后您有以下代码:

    A a = new A();
    a.someAbstractOrVirtualMethodOnD();
    
    。。。是