Java初心者です。
Javaのメソッドについて勉強していたら疑問に思ったので
よろしければ、ご回答お願いします。
だいたいのメソッドの使い方などを勉強したのですが、
①戻り値も引数もないメソッド。
②戻り値だけがあり、引数はないメソッド。
この2つのメソッド使いドコロがイマイチわかりません。
引数ありのメソッドは、引数を代入して、返したり、メソッド内で処理したりするのは
わかるのですが、引数がない場合はどのような使い方をするのでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答8件
0
ベストアンサー
簡単な例を示します。
下記はカウントアップするクラスです。
Java
1class Counter{ 2 int num; 3 public void countUp(){ 4 num++; 5 } 6 public int getCount(){ 7 return num; 8 } 9}
①戻り値も引数もないメソッド。
countUpメソッドはnumをインクリメントするメソッドです。これは呼び出し元から情報を与える必要もなく、戻り値を確認する必要もなさそうです。
このようにインスタンス内部の状態を変更するが、インスタンス外部の情報が不要な場合等に使います。
②戻り値だけがあり、引数はないメソッド。
getCountメソッドは現在のnumを戻り値にしています。やはり、呼び出し元からの情報は不要です。
このようにインスタンス内部の情報を取得する場合等に使います。
ただ、このようなシグネチャの決め方はケースバイケースなので、一概に何に使うかは言えないですね。
重要なことはカプセル化を破壊しないようなシグネチャを付けることでしょう。
投稿2016/02/17 08:11
編集2016/02/17 10:46総合スコア18155
0
もう少し勉強すればわかってきますよ。
投稿2016/02/18 00:37
退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
①戻り値も引数もないメソッド。
②戻り値だけがあり、引数はないメソッド。
Array クラスにも上記のようなメソッドがいくつもあります。
https://docs.oracle.com/javase/jp/8/docs/api/java/util/ArrayList.html
...
void clear()
このリストからすべての要素を削除します。
Object clone()
このArrayListインスタンスのシャロー・コピーを返します。
...
メソッドの動作や意味により、引数の有無や戻り値の有無が決まってきます。
投稿2016/02/17 13:24
総合スコア22324
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
既に他の回答者様が回答されているものと一部かぶりますが、思いついたものを挙げてみます。
①戻り値も引数もないメソッド。
- 入力を必要としないけれど複数の箇所から呼ばれるひとまとまりの処理、古い言い方だとサブルーチン的なもの
- 直接フィールドの読み書きをするメソッド
②戻り値だけがあり、引数はないメソッド。
- getterメソッド
- 特定のシステム値やプロパティーやファイルの内容を返すメソッド(例:
System.currentTimeMillis()
) - ①の1つ目に書いたひとまとまりの処理に、処理の結果が必要な場合、戻り値を持たせることがあります
投稿2016/02/17 08:34
総合スコア9390
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
①の場合は何かしらの初期処理をするときとかですかね。
そのクラスの初期設定を行いたいなど、例えばDBやテーブルの初期設定を走らせたい
初期設定なので、別段戻り値は必要ないですから。
※しっかりと初期設定されたから確かめたいなら、戻り値を指定するといいとは思います
public void init_table(){ // sql文など }
②の例
class test(){ private int hoge = 0; public void set_hoge(){ hoge++; } public int get_hoge(){ return hoge; } } class main(){ public static void main(){ test test_class = new test(); test.set_hoge(); main_test(); } private main_test(){ System.out.println("hoge="+test.get_hoge()); } }
※久々に書いたから、構文は間違っているかもしれない
のように、privateで保持したい値などを別のクラスから変更するときや取得するときに利用します。
いわゆる、getter/setterです。
一つのメソッドに書けばいいですが、一つのメソッドに大量に処理を書くと段々と分かりづらいソースになってしまうのと、同じような処理ならまとめてしまうっていのも大事です。
※メンテナンスしやすくなるといったのも有ります
投稿2016/02/17 08:12
総合スコア34
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。