【发布时间】:2012-03-20 16:04:28
【问题描述】:
在 Java 中,所有的类都隐式地扩展了 Object 类,除此之外,最多只能继承一个类。 那么,Java 是隐含地允许我们扩展 2 个类还是 Java 遵循的其他逻辑?
【问题讨论】:
-
如果你仔细看,那不限于 2。它可以无限多,但这并没有改变你只能扩展一个类。
标签: java
在 Java 中,所有的类都隐式地扩展了 Object 类,除此之外,最多只能继承一个类。 那么,Java 是隐含地允许我们扩展 2 个类还是 Java 遵循的其他逻辑?
【问题讨论】:
标签: java
您的类扩展了另一个类,但它也扩展了 Object,因此您仍然处于一行继承中,而不是两行。
【讨论】:
没有。在 Java 中,一个类只能从一个类继承,默认情况下这是您引用的 Object 类。然而,我们可以指定一个不同的类来继承(使用'extends'关键字)。但是,这个父类本身将有一个父类,依此类推,直到最终我们回到 Object 类。也许一个例子会有所帮助:
class Animal {
}
class Cat extends Animal {
}
class Tiger extends Cat {
}
在上面的例子中,Tiger 继承自 Cat,而 Cat 继承自 Animal,Animal(默认情况下)继承自 Object。
希望这可以解决问题。
【讨论】:
没有。你只能扩展一个类,但这个类本身可以扩展另一个类。如果在 extends 子句中没有指定任何超类,则直接从 Object 扩展。如果你在 extends 子句中指定一个类,你就从这个类扩展它自己的超类等等,直到 Object。
【讨论】:
每个没有指定扩展的 Java 类都会自动扩展 Object。因此,如果您从另一个类扩展,将会有一些端点扩展不扩展类并且默认为 Object。这会导致每个类都传递扩展 Object。
【讨论】:
“不,这是对隐式对象继承的误解。每个Java类最终都是Object超类的后代,无论是否有extends Object语句。如果您扩展应用程序编程接口(API)类,则Object继承是通过直接的超类传递的,而不是从超类和 Object 类传递的。从 Object 类的隐式继承通过单行父类传递,以确保所有用户定义的类都具有标准 toString()、equals() 和hashCode() 方法。"
其他答案在这里 - Inheritance in java and Superclasses(Object, Class)
【讨论】:
不完全是.... 您可以一次从一个类继承,但没有什么能阻止该类本身拥有父类。
【讨论】:
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 的对象,那么我们也可以访问对象类
【讨论】:
A类//内部扩展对象类
{
}
public class B extends A //JVM不会在这里扩展object class,因为A已经扩展了Object
{
}
【讨论】: