質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

8回答

1860閲覧

メソッドについて質問です。

newtorino

総合スコア47

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2016/02/17 08:00

Java初心者です。
Javaのメソッドについて勉強していたら疑問に思ったので
よろしければ、ご回答お願いします。

だいたいのメソッドの使い方などを勉強したのですが、
①戻り値も引数もないメソッド。
②戻り値だけがあり、引数はないメソッド。
この2つのメソッド使いドコロがイマイチわかりません。

引数ありのメソッドは、引数を代入して、返したり、メソッド内で処理したりするのは
わかるのですが、引数がない場合はどのような使い方をするのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答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
yona

総合スコア18155

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

もう少し勉強すればわかってきますよ。

投稿2016/02/18 00:37

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/02/18 14:29

回答ではない
guest

0

「戻り値も引数もないメソッド」は、インスタンスの状態を変化させるメソッドと考えればいいんじゃないでしょうか。「ポケット」クラスに「叩く」というメソッドがあり、それを実行すると、中に入っているビスケットが 2 倍になる、とか。
「戻り値だけがあり、引数はないメソッド」は、たとえばインスタンスの状態を知るためのメソッドなどがあります。たとえば、「ポケット」クラスに「ビスケットを取り出す」や「中のビスケットの数を返す」というメソッドがある、とか。

投稿2016/02/17 08:17

unau

総合スコア2468

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

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

katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

自分の作成したプログラムのソースを眺めてみました。
あくまで一例です。

(1)戻り値も引数もないメソッド。

SQLiteOpenHelperを継承したクラスの中で、
”Create Table"文の実行など
→必要材料がメンバなどに全て揃っていて、結果を返す必要がない場合

(2)戻り値だけがあり、引数はないメソッド。

Get/Set プロパティのGetメソッドとして
→クラスメンバをカプセル化し、結果だけを通知したい場合

以上、参考になりますでしょうか?

投稿2016/02/17 12:38

Aeona

総合スコア396

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

既に他の回答者様が回答されているものと一部かぶりますが、思いついたものを挙げてみます。

①戻り値も引数もないメソッド。

  • 入力を必要としないけれど複数の箇所から呼ばれるひとまとまりの処理、古い言い方だとサブルーチン的なもの
  • 直接フィールドの読み書きをするメソッド

②戻り値だけがあり、引数はないメソッド。

  • getterメソッド
  • 特定のシステム値やプロパティーやファイルの内容を返すメソッド(例:System.currentTimeMillis()
  • ①の1つ目に書いたひとまとまりの処理に、処理の結果が必要な場合、戻り値を持たせることがあります

投稿2016/02/17 08:34

argius

総合スコア9390

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

外部からの情報を必要としない、マクロ的な処理は引数も戻り値もないメソッドになります。
引数なし、戻り値ありのメソッドは、オブジェクトのprivateなフィールドを取得するためのゲッターとして使われます。

投稿2016/02/17 08:12

swordone

総合スコア20651

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

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

rihito

総合スコア34

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問