ここから本文です

Javaプログラミング(入門) テキストに記載された次のメインメソッドに含まれ...

misaki_91さん

2019/9/1511:10:19

Javaプログラミング(入門)

テキストに記載された次のメインメソッドに含まれるaddがどうして単体でAdditionクラスの toStringメソッドを呼び出すことが出来るのか理解できません。

add.toString()といった表記が必要ではないのでしょうか。

■メインメソッド
public static void main(String[] args){
Expression add = new Addition (five, six);
System.out.println(add + " = " + add.evaluate());
}

■Additionクラス
public class Addition implements Expression{
private final Expression left, right;
public Addition (Expression left, Expression right){
......(中略)......
public String toString(){
return String.format("(%s +%s)", left, right);
}
}

閲覧数:
15
回答数:
2
お礼:
25枚

違反報告

ベストアンサーに選ばれた回答

pri********さん

2019/9/1511:41:30

暗黙の型変換です。
全てのオプジェクトの基底クラスであるObject型がtoString()を持っています。

なので、String型に関しては暗黙の型変換が効く場合があります。
System.out.println()メソッドはString型を引数にとるので、渡すオプジェクトはString型と見なさなければなりません。
なので、暗黙に型変換が行われるのです。

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜1件/1件中

プロフィール画像

カテゴリマスター

あみやさん

2019/9/1511:21:40

オブジェクトを+演算子で繋いだ時に、
オブジェクトを連結可能な形にする為に、自動的にそのオブジェクトの持つ
toStringメソッドが呼び出され、オブジェクトが文字列に変換されます。

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる