クラスはすべての親クラスであるため、クラスがJavaのすべてのクラスによって暗黙的に拡張されているObject
ことを知りたいというJavaでのクエリがあります。Object
例: オブジェクト クラスを作成する場合B
、A
Java ではクラスは最大で 1 つのクラスしか拡張できないため、問題のないクラスを拡張しますが、私のクラスはクラスB
を暗黙的に拡張したためObject
、どのようにクラスを拡張できA
ますか? お知らせ下さい。
クラスはすべての親クラスであるため、クラスがJavaのすべてのクラスによって暗黙的に拡張されているObject
ことを知りたいというJavaでのクエリがあります。Object
例: オブジェクト クラスを作成する場合B
、A
Java ではクラスは最大で 1 つのクラスしか拡張できないため、問題のないクラスを拡張しますが、私のクラスはクラスB
を暗黙的に拡張したためObject
、どのようにクラスを拡張できA
ますか? お知らせ下さい。
これは、個人が親を 1 人しか持たない家系図と考えてください。各個体には 1 つの親しかありませんが、その親の先祖はすべて個体の先祖でもあります。これは、すべてのクラスが拡張されていると言われるときに意味されますObject
。これは、すべてのクラスの最も遠い祖先ですが、宣言されているextends Object
かextends
宣言されていないクラスの直接の祖先 (親) のみです。
概念は知っていると思いますが、少し混乱しているに違いありません。木を考えてみてください。オブジェクト クラスはそのツリーのルートです。間に葉と他のノードがあります。クラス階層がどのように設計されていてもObject
、そのルートはそれであるため、最終的にはそうなります。したがって、クラスを考えずに、任意のクラス (abstract または Interface ではない) を拡張できますObject
。Object
拡張は自動的に行われるためです。
親が指定されていない場合にのみ暗黙的に を継承しObject
ます。それ以外の場合は、指定された親のみを継承します。
サイドノート:
これは許可されています:
C
|
A
|
B
上記の場合、求めている内容に合わせて with にC
置き換えます。Object
これは許可されていません:
C A
\ /
B
継承は好きなだけ深くすることができますが、1 つのオブジェクトが複数の親を持つことはできません。
ここで、キーワードはEXPLICITであることをお勧めします。1 つのクラスのみを明示的に拡張できます。しかし、そうしないと、Java はクラスを Object クラスで暗黙的に拡張します。その場合、オブジェクトは継承されたクラスの階層のどこかにある必要があります。