2017-03-24 17 views
-4

例では、動物の名前を返すtoStringを持つ抽象的な動物クラスがあり、その子クラスがそれを別に実装していない場合でも、toStringをオーバーライドする必要がありますか?すべてのクラスにtoStringメソッドが必要ですか?

+3

いいえ............. – mdewit

+0

あなたはそれを試してみませんか? –

+0

toStringメソッドは、デフォルトでObjectクラス(https://docs.oracle.com/javase/7/docs/api/java/lang/Object.html#toString())に実装されています。このメソッドは抽象メソッドではないため、オーバーライドする必要はありません。オブジェクトの文字列表現を変更したい場合は、これを行うことができます。 – Dorian

答えて

1

子クラスがより詳細な説明を提供しないようにしたい場合を除きます。あなたはJavaにはまったく新しいように聞こえるので、継承の仕組みを理解できないかもしれません(または、そうした場合、この質問は意見に基づいています)。

デフォルトのObject.toString()は、オブジェクトに関する非常に不自然な情報を返します。多くのクラスがそれを上書きします。しかし、それ以外のList実装は、それ自身をオーバーライドする必要がないように、それをオーバーライドするAbstractListのようなクラスがあります。状況はあなたが説明したものとかなり同じです。 toString()AbstractListに一度上書きし、ArrayListLinkedListなどを使用してください。

0

のtoString()すべてのクラスObjectクラス内とJavaのメソッドは、Objectクラスを継承しているので、このクラスのtoString()メソッド

public class Test { 
} 

Test t = new Test(); 
t.toString(); // it's ok because it inherit the Object class 

のtoStringにレコード値を表すときに使用されてい人間は可読な形式で 形式です。 System.out.println(t)その同じ System.out.println(t.toString()) toStringは他の人のために表示されます あなたのクラスはあなたのクラスに関する考えを持つことができます。

申し訳ありませんが、私の英語について^^。

関連する問題