ふと気になったんですが、下記のようなnameを持つクラスがあるとして
①と②って同じことしてませんか?
同じことしてるなら別にsetterとかいらなくて
むしろgetterだけでいいような気が刷るのですが、どう思われますか?
java
1public class Test { 2 3 private String name; 4 5 //① 6 pblic Test(String name){ 7 this.name = name; 8 } 9 10 //② 11 public void setTest(String name){ 12 this.name = name; 13 } 14}
ふと気になったので質問してみたら結構回答つきました。
思いついたのを今作ってみたのですが、要は使い分けとしてはこんな感じでいいですかね?
※思いつきでやってみたのでロジックは完璧ではありません。
package example; public class Character { private String name; private int lv,hp,mp,atk,def; private int exp;//敵1体撃破時の経験値 private int monsterNum;//敵の数 private int expAll;//積算経験値 public Character(String name) { //名前を決めてキャラを生成 //初期値は下記の通り this.name = name; this.lv = 1; this.expAll = 0; this.hp = 50; this.mp = 15; this.atk = 35; this.def = 20; } //エンカウント public void enk(int i) { this.exp = 60;//敵1体が持つ経験値 this.monsterNum = i;//敵の数 this.expAll += (this.exp*this.monsterNum);//バトルで得た経験値を積算していく } //とりあえずsetterを使う場面として public void setLv(int lv){ if(this.expAll > 500) { this.lv = lv; } } public static void main(String[] args) { Character chara = new Character("rento"); System.out.println("名前:" + chara.name); System.out.println("Lv:" + chara.lv); System.out.println("HP:" + chara.hp); System.out.println("MP:" + chara.mp); System.out.println("攻撃力:" + chara.atk); System.out.println("防御力:" + chara.def); System.out.println(chara.name + "は敵と遭遇した。"); System.out.println(chara.name + "は、超メラゾーマを唱えた!"); System.out.println("敵に993,457,803,457,834のダメージを与えた!"); System.out.println("敵は二酸化炭素となった!!!"); chara.enk(1); System.out.println(chara.name + "は" + (chara.exp*chara.monsterNum) + "というちっぽけな経験値を手に入れた。"); chara.setLv(2); System.out.println(chara.name + "は魔物の群れに囲まれた。"); System.out.println(chara.name + "は、大地を砕き空を割った!!!"); System.out.println("敵は二酸化炭素になることすら許されない程のダメージを受けた!"); chara.enk(50); System.out.println(chara.name + "は" + (chara.exp*chara.monsterNum) + "というそこそこの経験値を手に入れた。"); chara.setLv(2); System.out.println("現在の総経験値は" + chara.expAll + "です。"); System.out.println("冒険後のステータスは下記の通りです。"); System.out.println("名前:" + chara.name); System.out.println("Lv:" + chara.lv); System.out.println("HP:" + chara.hp); System.out.println("MP:" + chara.mp); System.out.println("攻撃力:" + chara.atk); System.out.println("防御力:" + chara.def); } }
名前:rento
Lv:1
HP:50
MP:15
攻撃力:35
防御力:20
rentoは敵と遭遇した。
rentoは、超メラゾーマを唱えた!
敵に993,457,803,457,834のダメージを与えた!
敵は二酸化炭素となった!!!
rentoは60というちっぽけな経験値を手に入れた。
rentoは魔物の群れに囲まれた。
rentoは、大地を砕き空を割った!!!
敵は二酸化炭素になることすら許されない程のダメージを受けた!
rentoは3000というそこそこの経験値を手に入れた。
現在の総経験値は3060です。
冒険後のステータスは下記の通りです。
名前:rento
Lv:2
HP:50
MP:15
攻撃力:35
防御力:20
回答8件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/09/14 14:06
2016/09/15 00:27