4

重複の可能性:
Object クラスを継承しないクラス

Java の各クラスが Object から暗黙的に継承されているかどうか疑問に思っています。いいえと書かれた本を読んでいるのですが、かなり混乱しました。

4

4 に答える 4

7

あの本は嘘をついている。Java API の任意のクラスを見ると、最初の親クラスが実際にはObject.

ところで:とにかくその本は何ですか?

**編集**

最初に 1 つのことを明確にしましょう。

Q: すべての Java クラスは Object クラスから暗黙的に継承されますか?

A:Objectクラスがスーパークラスを持つことができないと考えている場合は、「それは原始クラスであり、直接のスーパークラスを持たないため」、そうではありません。したがって、あなたの本は正しかったのです。

ただし、「そのクラスObjectは他のすべてのクラスのスーパークラスである」と考え、 (クラスはそれ自体を継承できないため) 質問から除外すると、定義によりyesになります。


言語とその仕様についての私の理解から、「すべてのクラスと配列型はクラスのメソッドを継承するObject」ということは文字通りに解釈されるべきです。作成されたすべてのオブジェクトは、クラスで定義されたメソッドを所有することを意味しますObject。この理由と、クラスObjectにスーパークラスがないため (仕様にスーパークラスがないため!)、またすべてのクラスがそれらのメソッドを継承するため (メソッドはJVM によって作成された任意のオブジェクトで使用可能です)、クラスが明示的に拡張しないObject(クラスObjectではないため)、それ自体で、または仮想マシンによるスーパークラスから暗黙的に拡張します。

于 2013-01-06T00:01:56.750 に答える
2

ドキュメントの引用:

public class Object 

クラス オブジェクトは、クラス階層のルートです。すべてのクラスには、スーパークラスとして Object があります。配列を含むすべてのオブジェクトは、このクラスのメソッドを実装します。

于 2013-01-06T00:01:41.863 に答える
1

ご覧のとおり...クラスはオブジェクトから継承します:

http://docs.oracle.com/javase/6/docs/api/java/lang/Class.html

public final class Class<T>
    extends Object
    implements Serializable, GenericDeclaration, Type, AnnotatedElement

この本をゴミ箱に捨てろ!

于 2013-01-06T00:32:52.040 に答える
1

その本は、ある場合には正しいかもしれません。クラスは拡張されObjectませんObject。しかし、他のすべてがそうであることを覚えておいてください。
ドキュメントを参照してください。 クラス オブジェクト

于 2013-01-06T00:06:49.440 に答える