我有一个奇怪的Java问题:
据我们所知:
java.lang.Object
然后,java.lang.Object
必须扩展java.lang.Object
,它本身就是,因此,它应该是不可能的。如何用Java实现对象?
Object
是第一个规则的例外,并且没有超类。从JLS3
8.1.4开始
:
extend子句不能出现在Object类的定义中,因为它是原始类并且没有直接的超类。
您也可以通过反射尝试一下:
Object.class.getSuperclass(); // returns null
问题内容: 为什么对象类是Java中的超类? 问题答案: 这是一个好问题。Java选择使单个类成为所有内容的最终父类,以便有一种简单的方法来传递任意对象,而无需知道其类型(即,您可以使用Object的声明类型来引用每个单个项目在类型系统中,甚至使用其包装器类的基本体也是如此。但是,存在诸如C ++之类的OOP语言,没有像Java中那样的通用基类。拥有通用基类的另一个好处是,对于超类,处理超类的逻辑
问题内容: 所有自定义类/对象的超类是否隐式继承?我以为Java不支持多重继承。我问的原因是,如果我已经从我的自定义类中的另一个类继承了,并且Java再次在它之上强制隐式继承,这不是多重继承吗? 另外,java.lang.class类还是所有自定义类/对象的超类吗?如果没有,如何在Java反射中获取传递的任何类的类类型,或如何在任何对象上调用isInstance? 问题答案: 一切都是对象,说您可
我有Class1类的object1。我想将Class1类扩展到Class2,添加一个方法,然后创建Class2的object2,它在所有方法中的行为都与object1完全相同,只是现在它将有一个额外的方法。 Object1.OldMethod应该具有与Object2.OldMethod完全相同的行为。一个愚蠢的方法是编写一个脚本,用class1继承的100多个方法生成新类: 编辑:很抱歉没有把它说
问题内容: SuperClass object = new SubClass(); 为什么使用超类实例化上面的子类对象?因为我学会实例化对象的唯一方法是: 我正在学习Java。 问题答案: 您可能有一个仅接受实例的方法。由于 是 ,您可以使用的实例并将其视为。 使用接口时,会使用相同的行为: 这就是多态的美。它允许您更改类内部的实现,而无需破坏其余代码。
问题内容: 我有2个类,分别称为超类和子类,我试图将子类对象转换为超类,但是当我想使用超类的子类对象时,它似乎不起作用。请帮忙解释。谢谢。这些是代码: 当我尝试使用子类的displaySub()时出现错误 问题答案: 超类不能知道子类方法。 这样考虑: 你有超一流的 你有两个子类,即:, 两个子类将具有相同的特征,例如 该超意识到这些,因为所有S能说话(即使它不知道此操作的确切机制) 一但可以做的
问题内容: 动物是狗的超类,狗有一种叫bark的方法 考虑以下: 会发生什么? the assignment isn’t allowed the call to bark is allowed and “woof” is printed at run time the call to bark is allowed but nothing is printed the call to bark c