継承: Objectクラス

(Objectクラスを除く)全てのクラスはObjectクラスを継承している

  • extendsを書かない場合は、自動的にObjectクラスを継承する(「extends Object」と同じ)。
  • Objectのメソッドをオーバーライドして動作を変えることができる。

UMLによる継承の関係の図示

Diagram

toStringメソッド

System.out.printlnで表示しようしたり、文字列(Stringクラスのインスタンス)を+演算子で繋げようとすると、ObjectクラスにあるtoStringメソッドが呼ばれて、そのインスタンスを表す文字列型が取り出される。

例えば、

とすると、

lesson11.d00000.Comic@5e481248

等と表示される。これは、ObjectのtoStringが

と定義されているから(例えば、JDK6のソースコードhttp://hg.openjdk.java.net/jdk6/jdk6/jdk/file/48e891c51be5/src/share/classes/java/lang/Object.java#l235)。

オーバーライドして、インスタンスの情報を見やすく表示するようにしてみよう。Bookクラスに

を加えることで、

の表示が変わる(Bookを継承しているComicの場合も)。