- 締切済み
Javaの問題がわからない
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- akira1720
- ベストアンサー率80% (128/159)
MethodB は中身がからっぽ(練習問題の目的とあまり関係ないので省略されている)なので、それを static メソッドして定義しなければいけない必然性についてはこの練習問題の中には書かれていません。ここでは static メソッドとインスタンスメソッドの呼び出し方などについて違いを学ぶのが目的で、どんなときに static メソッドを使うといいかはまた別のところで学ぶのでしょう。 インスタンスメソッドは、そのインスタンスの状態に依存して結果が変わってくるようなものに使います。例えばショッピングカートに入っている商品のリストを返すメソッドだったら、特定のショッピングカートの現在の状態が存在するのが前提ですよね。ショッピングカートクラスに static メソッドとして定義しても、毎回同じ値しか返せないので、役に立ちません。 逆に、static メソッドは、過去の経緯とか前提とか関係なく、同じ引数でそのメソッドを呼んでやると、いつでも同じ結果になるようなものに使います。Java 標準の Math クラスなんかはその典型ですよね。その前でどんな処理をしてようが、誰がショッピングしてようが、Math.sin(0) の結果は常に 0 になります。
- _kappe_
- ベストアンサー率68% (1600/2328)
8行目でmethodB()はstaticメソッドだと宣言されています。 staticメソッドを呼ぶときは4行目にあるクラス名.メソッド名()の形が普通ですが、Testクラス内からmethodB()を呼ぶ場合はクラス名.を省略してmethodB()だけで呼ぶことができます。 これに対してmethodC()とmethodD()は9行目・15行目でインスタンスメソッドだと宣言されています。5行目・6行目はどのインスタンスに対してmethodC()やmethodD()を呼ぶのかを指定していないのでエラーになります。12行目はインスタンスメソッド内から同じクラスのインスタンスメソッドの呼び出しなので、インスタンスの指定を省略してmethodD()だけになっています。
- wormhole
- ベストアンサー率28% (1626/5665)
インスタンスメソッドは、何故インスタンスメソッドというのかわかりますか?(質問を見る限りわかってなさそうなんだけど)