2010-06-02 99 views
5

像我们从其他类继承的那样,我们继承Object吗(当然除了我们没有明确指出)或者对于Object类有一些特殊的特权,并且它不像其他类那样被继承?我们是继承Object吗?

+12

其实不,我们不是因为我们是人类而不是Java对象。 – BoltClock 2010-06-02 18:53:46

+1

嗯,我们在技术上是对象(虽然非常复杂),即使我们不喜欢被这样想。 – CheesePls 2010-06-02 19:01:02

回答

2

不,这是一样的。这里从JLS 8.1.3摘录:

如果任何其他 类的类声明没有延伸条款,那么 类具有类Object作为其 隐含的直接超类。

当然,Object本身的情况比较特殊(JLS):

除了Object每一类是 延伸的(即,的子类) 单个现有类(第8.1节.3)和 可以实现接口(§8.1.4)。

+0

如果该类具有扩展子句,会发生什么,因为您没有指定该子句。 – 2010-06-03 11:19:33

+1

@Knowing所有的类直接或间接地从'Object'继承。继承关系当然不能形成一个循环。 Object类是唯一从无人继承的类,它是层次结构的顶层。 http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html从'Object'或其他类继承没有区别,除了基本类型之外,一切都是一个对象。即使数组是对象http://java.sun.com/docs/books/jls/second_edition/html/arrays.doc.html。 – ewernli 2010-06-03 11:59:36

+0

@ewernli所以如果你说从对象继承和从任何其他类继承没有区别,为什么我们可以从例如这样的多个类继承:public class MyClass extends YourClass {}? – 2010-06-03 12:57:40

0

一切都是Java中的对象。对象(toString()wait()等)的所有方法都可以在任何Java类的任何实例上调用。

+0

*“一切都是Java中的对象。”*不正确。基元不是“对象”。 – 2013-01-13 00:45:44

+0

@ om-nom-nom您的评论似乎很迂腐。这个问题与主流无关。 – 2013-01-14 10:56:30

5

Java中的每个类都是对象。它们的行为与Objects类似,可以添加到Object类型的集合中,它们可以使用Object中定义的任何方法。

所以,是的,所有东西(除了基元)都从Java中的Object继承。编辑:Java采取“一切都是对象”的方法。它有点强制面向对象编程。

实施例:

  • 如果类A不延伸另一类它固有地延伸的Object。

  • 如果A类扩展了另一个B类,它也扩展了Object,因为B必须具有扩展的Object。

+0

那么它是如何是或否?我在问,因为我得到两个答案,这两个答案都是相互矛盾的。 – 2010-06-03 11:20:20

+0

答案是“我们像其他任何类一样继承Object”(当然,我们不必明确说明)“ – CheesePls 2010-06-03 13:28:54