コツコツ学習ブログ

プログラマのweb上のメモ的なもの

自作クラスでのtoString()のオーバーライド

Javaにおける全てのクラスの祖先はlang.objectクラスである。 全てのクラスは、Objectクラスで定義されたメソッドを持つことが可能。

自作クラスで、実装してもないのにequals()やtoString()が使えるのはこういった理由から。 とはいえクラスを作成したらオーバーライドしないと、toString()しても @******* といった文字列(インスタンスのアドレス)が出力される。

toString()は、「インスタンスの内容を、人間が読んで理解できる文字列を返す」 という責務があたえられたメソッド。 System.outは、引数にインスタンスを渡すと そのtoString()メソッドを呼び出して文字列表現を取り出し、画面に表示する。

適切な使用の為にはオーバーライド必要。

//Main.java

public class Main {
  public static void main(String[] args) {
    Station station = new Station();
    station.setName("秋葉原");
    station.setNumber(1);

    System.out.println(station.toString());
  }
}

//Station.java

public class Station {
  
  private String name;
  private int number;
public String toString() {
    return ("*駅名*:" + this.name + "*番号*:" + this.number);
}

  public void setName(String name) {
    this.name = name;
  }
  public void setNumber(int number) {
    this.number = number;
  }
}

■出力結果 駅名:秋葉原番号:1