【问题标题】:Java doesn't support multiple inheritance but implicitly every class in java extends Object and allows one more [duplicate]Java不支持多重继承,但Java中的每个类都隐式地扩展了Object并允许更多[重复]
【发布时间】:2012-03-20 16:04:28
【问题描述】:

在 Java 中,所有的类都隐式地扩展了 Object 类,除此之外,最多只能继承一个类。 那么,Java 是隐含地允许我们扩展 2 个类还是 Java 遵循的其他逻辑?

【问题讨论】:

  • 如果你仔细看,那不限于 2。它可以无限多,但这并没有改变你只能扩展一个类。

标签: java


【解决方案1】:

您的类扩展了另一个类,但它也扩展了 Object,因此您仍然处于一行继承中,而不是两行。

【讨论】:

    【解决方案2】:

    没有。在 Java 中,一个类只能从一个类继承,默认情况下这是您引用的 Object 类。然而,我们可以指定一个不同的类来继承(使用'extends'关键字)。但是,这个父类本身将有一个父类,依此类推,直到最终我们回到 Object 类。也许一个例子会有所帮助:

    class Animal {
    }
    
    class Cat extends Animal {
    }
    
    class Tiger extends Cat {
    }
    

    在上面的例子中,Tiger 继承自 Cat,而 Cat 继承自 Animal,Animal(默认情况下)继承自 Object。

    希望这可以解决问题。

    【讨论】:

      【解决方案3】:

      没有。你只能扩展一个类,但这个类本身可以扩展另一个类。如果在 extends 子句中没有指定任何超类,则直接从 Object 扩展。如果你在 extends 子句中指定一个类,你就从这个类扩展它自己的超类等等,直到 Object。

      【讨论】:

        【解决方案4】:

        每个没有指定扩展的 Java 类都会自动扩展 Object。因此,如果您从另一个类扩展,将会有一些端点扩展不扩展类并且默认为 Object。这会导致每个类都传递扩展 Object。

        【讨论】:

          【解决方案5】:

          “不,这是对隐式对象继承的误解。每个Java类最终都是Object超类的后代,无论是否有extends Object语句。如果您扩展应用程序编程接口(API)类,则Object继承是通过直接的超类传递的,而不是从超类和 Object 类传递的。从 Object 类的隐式继承通过单行父类传递,以确保所有用户定义的类都具有标准 toString()、equals() 和hashCode() 方法。"

          其他答案在这里 - Inheritance in java and Superclasses(Object, Class)

          【讨论】:

            【解决方案6】:

            不完全是.... 您可以一次从一个类继承,但没有什么能阻止该类本身拥有父类。

            【讨论】:

              【解决方案7】:
              using System;
              using System.Collections.Generic;
              using System.Linq;
              using System.Text;
              
              namespace MyExamples
              {
                  public class Object
                  {
                      static void Main(string[] args)
                      {
                      }
                      public void A1()
                      {
                      }
                  }
                  public class B : Object
                  {
                      public void B1()
                      {
                      }
                  }
              
                  public class D : B
                  {
                      public void D1()
                      {
                          D obj = new D();
                          obj.A1();
                      }
                  }
              }
              

              //如果一个类扩展了另一个类,那么我认为它不会再扩展对象类了 //但是父类将实现对象类...这相当于多级继承 // 像 D 扩展 B 但 B 不再扩展对象类 //并且B默认扩展对象类。因此,如果我们创建一个 D 的对象,那么我们也可以访问对象类

              【讨论】:

                【解决方案8】:

                A类//内部扩展对象类

                {

                }

                public class B extends A //JVM不会在这里扩展object class,因为A已经扩展了Object

                {

                }

                【讨论】:

                • 你能解释一下你在这里做什么吗?
                • 1、Object类是每个类的超类
                • 对象类是每个类的超类,但关系是多级的而不是多级的。这里A类没有继承任何类,所以内部对象类继承给A类,但是B类正在扩展A类,所以不能在这里扩展另一个类(对象类)。但是 Object Class 仍然是 Class B 的超类,因为 Class A 在内部扩展了 Object 类。 (对象---->A----->B)
                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2014-01-04
                • 1970-01-01
                • 2015-11-11
                • 1970-01-01
                • 2011-10-19
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多