2011-12-26 9 views
0

明示的にextendを指定していないのに、Javaの各クラスがjava.lang.Objectというクラスからどのように継承されるのでしょうか?すべてのクラスはどのように継承されていますか?

舞台裏では何が起こっていますか?

+6

私はいつも「A」が「B」の前に来るのですか?* –

+0

@HarryJoyユーモアのために、皮肉は認められませんが、D – COD3BOY

答えて

1

Javaプラットフォームのすべてのクラスは、オブジェクトの子孫です。オブジェクトクラスにはスーパークラスがなく、すべてのクラスには直接スーパークラスが1つしかありません(単一の継承)。他の明示的なスーパークラスが存在しない場合、すべてのクラスは暗黙のうちにObjectのサブクラスです。 オブジェクトからすべてのクラス継承するので

は、javadoc

0

まあを参照してください。冗長です。

+0

はい。私はすべてのクラスがObjectのサブクラスだと理解しています。しかし、これを行うためにどこかに設計/コード化する必要があります。それはどこにある?どのクラスでこの仕事をしたのですか? – Srinivasan

+0

これはコンパイラによって行われ、クラスによっては行われません。 – MByD

+0

誰でもこの概念をはっきりと説明するリンクがありますか? – Srinivasan

1

これは、Javaのメーカーが時間の霧の中に戻ってきたという設計上の決定でした。私は、すべてのオブジェクトに、具体的に記述する必要がなく、基本的なメソッド(hashCode、equals、wait、notify)を実装していることが重要だと考えています。これには利点がたくさんあります。例えば、hashCodeとequalsの実装では、SetsやHashMapsなどがうまく動作します。 notifyとwaitを実装することで、マルチスレッドプログラミングがはるかに容易になります。

舞台裏で何が起こっているかは、コンパイラまたはJVMのソースコードを調べる必要があると思います。しかし、実際にはあまり意味がありません。ほとんどのJava開発者は、すべてのオブジェクトがオブジェクトであるという事実に満足しています。これは、Javaを元気にするものの1つです。

+0

私は同意します。しかし、私はこのコンセプトを実装する正確なクラスを見つけることができません。実際の作業がどこで行われたのか正確なクラス名を教えてください。 – Srinivasan

関連する問題