- ベストアンサー
return new使用時
いつもお世話になっています。 return返却時に、newインスタンスを使用する場合、 newクラス名()、newクラス名().メソッド名()での返却が可能だと思うのですが、このような場合の実装方法はどうなるのでしょうか? 考えているのは、実装すると、 (1)、return new クラス名().メソッド名()で行う場合 public クラス名 method1() { return クラス名; //実現できない return このクラスに存在するメソッド名(); //OK return null; //OK } といった形になり、クラス名()が実装できない (2)、return new クラス名()で行う場合 public クラス名 method2() { return クラス名; //OK return null; //OK } となり、 (1)で返却された場合、返却されたメソッドの機能を持つことができると同時に、クラス自体の機能も持つ(この場合、クラスオブジェクトは持てず単にそのメソッドのみ使用可だと思っていたのですが...) (2)で返却された場合、返却されたクラスオブジェクトを持つことができる といった感じになります。 実際に、試したところ(1)と(2)でさほど変化がありません。 言いたいことは、 return時に、クラス名()で返却された場合、とクラス名().メソッド名()で返却された場合の違いと、 実際に使用されるのはどういったときかを教えて頂きたいのですが。 また、メソッドがつくのとつかない場合の違いはあったりするのでしょうか? 説明が不十分で申し訳ありません。 宜しくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (2)
- kztk
- ベストアンサー率53% (59/110)
- pcbeginner
- ベストアンサー率46% (261/560)
補足
回答ありがとうございます。 回答を読んで、重複してますが、自分なりに解読してみました。 クラス型か、どうかは、 たとえば、 public class Test { public String search_S() { return new User().getUserName(); } } public class User { private String address; private String addressNumber; public void setUserName() { this.userName = userName; } public String getUserName() { this.userName = userName; } public String getAddress() { return address; } public String getAddressNumber() { return addressNumber; } } というクラスがあったとして、 return 時は、どういった結果を求めているのかで変わってくる。 >>//クラスインスタンスを実行して、keyを取り出す >「クラスインスタンスを実行する」という意味が分かりません。インスタンスは実行するようなものではありません。 インスタンスは、 まずインスタンスを生成する前のクラスは、単なる「設計図」であり、このままではクラスの機能を使うことができない。 なので、クラスの機能を使えるようにするため、クラス名 変数 = new クラス名()でインスタンスを生成し、クラスの機能がようやく使用可能となる。 return new User().getUserName()にするのは、クラスオブジェクトが持つユーザー名だけがほしい return new User(); クラスオブジェクトの取得 Userクラスが持つデータがほしい >>「メソッドを返す」という意味が分かりません。 >return new returnSample_S().getKey(); >は、新しいreturnSample_Sインスタンスを生成したあと、そのgetKey >()メソッドの戻り値を返しているのであって、getKey()メソッドを返 >しているのではありません。 つまり、これは、getKey()というメソッドでkey値を返すという操作であり、返す返さないの問題でない。 ex)setUser()メソッドでユーザー名を設定するし、(操作)、getAddress()メソッドで住所を取得する(操作)。 この時に最終的に取得されるのが住所(フィールド) その際に、http://jibun.atmarkit.co.jp/lskill01/rensai/imajava02/imajava01.htmlの説明を読んだのですが、 大体このように理解しておけばいいということでしょうか? >>たとえば、returnで設定されたフィールドごと、あとで再使用する >>可能性があったら、 >「フィールド」の意味が分かっていないように思われます。 フィールドは、メソッド外で宣言される変数である。 ex)名前を登録する → その名前の住所、郵便番号を返す(戻り値)の場合 フィールド = 住所、郵便番号で、 また、フィールドの宣言理由が、メソッド=操作なので、操作結果を取るにはデータが存在しないといけないから public class User { private String addressNumber = "1565-2222"; //郵便番号 private String address = "○×市"; //住所 //以下、略 } といった感じでしょうか? つまり、private String addressNumber,address のことがフィールドで、 return時には、どういう結果を求めているかで、決められるので フィールドはひとまず考えない。 操作(メソッド)が決まれば、戻り値はすでに規定されているので自然とわかると思えるのですが。 一般的に、フィールドは、セッター・ゲッターで取り出すもので、 直接、クラスにアクセスして、データ(フィールド)を参照することは少ない User user = new User(); user.フィールド;は、ユーザー情報クラスが持つ、データを参照するという理解でいいのでしょうか? この場合、フィールドはクラスが持つデータとして理解しています。 宜しくお願いします。