重複の可能性:
Object クラスを継承しないクラス
Java の各クラスが Object から暗黙的に継承されているかどうか疑問に思っています。いいえと書かれた本を読んでいるのですが、かなり混乱しました。
重複の可能性:
Object クラスを継承しないクラス
Java の各クラスが Object から暗黙的に継承されているかどうか疑問に思っています。いいえと書かれた本を読んでいるのですが、かなり混乱しました。
あの本は嘘をついている。Java API の任意のクラスを見ると、最初の親クラスが実際にはObject
.
ところで:とにかくその本は何ですか?
**編集**
最初に 1 つのことを明確にしましょう。
Q: すべての Java クラスは Object クラスから暗黙的に継承されますか?
A:Object
クラスがスーパークラスを持つことができないと考えている場合は、「それは原始クラスであり、直接のスーパークラスを持たないため」、そうではありません。したがって、あなたの本は正しかったのです。
ただし、「そのクラスObject
は他のすべてのクラスのスーパークラスである」と考え、 (クラスはそれ自体を継承できないため) 質問から除外すると、定義によりyesになります。
言語とその仕様についての私の理解から、「すべてのクラスと配列型はクラスのメソッドを継承するObject
」ということは文字通りに解釈されるべきです。作成されたすべてのオブジェクトは、クラスで定義されたメソッドを所有することを意味しますObject
。この理由と、クラスObject
にスーパークラスがないため (仕様にスーパークラスがないため!)、またすべてのクラスがそれらのメソッドを継承するため (メソッドはJVM によって作成された任意のオブジェクトで使用可能です)、クラスが明示的に拡張しないObject
(クラスObject
ではないため)、それ自体で、または仮想マシンによるスーパークラスから暗黙的に拡張します。
ドキュメントの引用:
public class Object
クラス オブジェクトは、クラス階層のルートです。すべてのクラスには、スーパークラスとして Object があります。配列を含むすべてのオブジェクトは、このクラスのメソッドを実装します。
ご覧のとおり...クラスはオブジェクトから継承します:
http://docs.oracle.com/javase/6/docs/api/java/lang/Class.html
public final class Class<T>
extends Object
implements Serializable, GenericDeclaration, Type, AnnotatedElement
この本をゴミ箱に捨てろ!
その本は、ある場合には正しいかもしれません。クラスは拡張されObject
ませんObject
。しかし、他のすべてがそうであることを覚えておいてください。
ドキュメントを参照してください。
クラス オブジェクト