前提・実現したいこと
戻り値がクラス名になっている場合の読み方・理解の仕方
今回でいうと
public Goo useGoo(Goo g){}の部分に当たるところになります。
一般的な戻り値Stringやintなどはそのデータ型で返すんだなとわかるのですが、Gooなどといったクラスで返すというのはどういう考え方になるのかが理解できていないため、ご教授いただければ幸いです。
引数のところ(Goo g)というのもわかっていないので、申し訳ないのですが、お力添えいただければ幸いです。
該当のソースコード
java
1 2//class1 3class Boo{ 4 private String msg; 5 6 public Boo(String m){//コンストラクタかな。 7 msg=m; 8 } 9 10 public void setMsg(String m){ 11 msg=m; 12 } 13 14 public String getMsg(){ 15 return msg; 16 } 17 18 public Goo useGoo(Goo g){ 19 setMsg(g.getMsg()); 20 return g; 21 } 22 23} 24 25//class2 26class Goo{ 27 private String msg; 28 public Goo(String m){//コンストラクタかな。 29 msg=m; 30 } 31 32 public void setMsg(String m){ 33 msg=m; 34 } 35 public String getMsg(){ 36 return msg; 37 } 38 39} 40 41//class3 42public class test3 { 43 44 public static void main(String[] args) { 45 Boo b=new Boo("Boo"); 46 Goo g=new Goo("Goo"); 47 b.useGoo(g); 48 System.out.println(b.getMsg()+":"+g.getMsg()); 49 } 50 51} 52
試したこと
java silverの紫本にて出題されている問題なので、チャプターを確認しながら復習していたのですが特にここに関する記述がありませんでした。
> 一般的な戻り値Stringやintなどはそのデータ型で返すんだなとわかる
Stringもれっきとしたクラスです。
public String hoge(String s){
return s;
}
は、わかるけど、
public Goo hoge(Goo g){
return g;
}
だと、わからないってことですか?
public String hoge(String s){
return s;
}
は、わかるけど、
public Goo hoge(Goo g){
return g;
}
だと、わからないってことですか?
>ご返答いただきありがとうございます!
そうです!その通りです!上のコードだとStringの型として文字を返すというのはわかるのですが、
下のhogeだとGoo型を指定しているというのはわかるのですが、そもそもの話、Goo型(クラス)とは
何を返すのかというところがわからないです。。。
Stringクラスがjava.langパッケージに含まれていて、特に意識しないでも最初から使えてる基本的なクラスなので、ある意味プリミティブな型と同様なものとして認識されてしまっているのかもしれません。
https://docs.oracle.com/javase/jp/8/docs/api/java/lang/package-summary.html