黑马程序员技术交流社区
标题:
get和set方法-投色子问题
[打印本页]
作者:
黑马王双
时间:
2013-6-8 11:33
标题:
get和set方法-投色子问题
本帖最后由 黑马王双 于 2013-6-8 13:13 编辑
题目:用用面向对象的思想实现如下的骰子游戏:丢下两个骰子,若分值的总值为7点,则赢;否则输。
代码:
一,
public class Test3 {
public static void main(String[] args){
DieGame dieGame = new DieGame();
if (dieGame.play()) {
System.out.println("你赢了!");
} else {
System.out.println("你输了!");
}
}
}
class Die {
private int faceValue;
// public int getFaceValue() {
// return faceValue;
// }
// public void setFaceValue(int faceValue) {
// this.faceValue = faceValue;
// }
public int roll() {
this.faceValue = (int) (Math.random() * 6 + 1);
return faceValue;
}
}
class DieGame{
private Die die1 = new Die();
private Die die2 = new Die();
public boolean play() {
die1.roll();
System.out.println("第一次点数:" + die1.roll());
die2.roll();
System.out.println("第二次点数:" + die2.roll());
if (die1.roll() + die2.roll() == 7) {
return true;
} else {
return false;
}
}
}
二,
public class Test3 {
public static void main(String[] args){
DieGame dieGame = new DieGame();
if (dieGame.play()) {
System.out.println("你赢了!");
} else {
System.out.println("你输了!");
}
}
}
class Die {
private int faceValue;
public int getFaceValue() {
return faceValue;
}
public void setFaceValue(int faceValue) {
this.faceValue = faceValue;
}
public void roll() {
this.faceValue = (int) (Math.random() * 6 + 1);
}
}
class DieGame{
private Die die1 = new Die();
private Die die2 = new Die();
public boolean play() {
die1.roll();
System.out.println("第一次点数:" + die1.getFaceValue());
die2.roll();
System.out.println("第二次点数:" + die2.getFaceValue());
if (die1.getFaceValue() + die2.getFaceValue() == 7) {
return true;
} else {
return false;
}
}
}
下面的二设置了set和get,这个到底有什么作用,和一方法比较有什么不同?
作者:
w270307032
时间:
2013-6-8 12:15
对于你的目前代码是没什么影响的,每个类内部的成员变量在私有化的同时,根据需要可以对外提供获取和设置它的方法。以楼主的例子来说,在开发的时候可能有这么种情况,如果class Die这个类不是楼主你自己写的,是别人已经定义好的类,但是楼主又想通过使用这个类来完成楼主以上的代码的话。楼主想实现随机投色子那自然是没问题了,但是如果你想作弊,比如控制某次摇色子的结果,如果没这2个方法,那你就做不到了。有了以上2个方法你就可以在class DieGame类中把
die1.roll();
System.out.println("第一次点数:" + die1.getFaceValue());
复制代码
改成
die1.setFaceValue(3);
System.out.println("第一次点数:" + die1.getFaceValue());
复制代码
的话,那你就将可以始终将第一次的色子结果控制在永远都是3了。如果class Die不是楼主写的,没这2方法的话,您是没办法直接去类的内部设 faceValue的值,来改变结果的。
作者:
黑马王双
时间:
2013-6-8 13:12
w270307032 发表于 2013-6-8 12:15
对于你的目前代码是没什么影响的,每个类内部的成员变量在私有化的同时,根据需要可以对外提供获取和设置它 ...
懂了,非常感谢。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2