Java練習(xí)


實驗4??類與對象(1)
1.實驗?zāi)康?/strong>
使用類來封裝對象的屬性和行為。
2.實驗介紹
類是JaVa中最重要的數(shù)據(jù)類型。類的目的是抽象出一類事物的共有屬性和行為,即抽象據(jù)以及在數(shù)據(jù)上所進行的操作。類的類體由兩部分組成:變量的聲明和方法的定義,其中的方法(方法名與類名相同,無類型)用于創(chuàng)建對象,其他的方法供該類創(chuàng)建的對象調(diào)用。
3.實驗內(nèi)容
編寫一個Java應(yīng)用程序,該程序中有兩個類:Tank (用于刻畫坦克)和Fight(主類)。要求如下。
(1) Tank 類有一個 double 類型的變量 speed,用于刻畫坦克的速度,一個 int 型bulletAmount,用于刻畫坦克的炮彈數(shù)量。在Tank類中定義speedUp()和speedDown()方法體現(xiàn)坦克有加速、減速行為,定義setBulleAmount(int p)方法,用于設(shè)置坦克炮彈的數(shù)量,fire()方法,體現(xiàn)坦克有開炮行為。
(2) 在主類Fight的main方法中用Tank 類創(chuàng)建兩輛坦克,并讓坦克調(diào)用方法設(shè)置炮彈的數(shù)量,顯示坦克的加速、減速和開炮行為。速度不能超過220,還有剎車。
4. 實驗步驟與代碼
import?java.util.Random;
?
public?class?Fight {
?
public?static?void?main(String[] args) {
Tank tank1,tank2;
tank1=new?Tank();
tank2=new?Tank();
Random rd=new?Random();
int?s=rd.nextInt(220)+1; ?//定義tank1最大速度220
int?d=rd.nextInt(220)+1; ?//定義tank2最大速度220
tank1.setBulletAmount(10);
tank2.setBulletAmount(10);
System.out.println("tank1的炮彈數(shù)量:"+tank1.getBulletAmount());
System.out.println("tank2的炮彈數(shù)量:"+tank2.getBulletAmount());
tank1.speedUp(s);
tank2.speedUp(d);
System.out.println("tank1的目前速度:"+tank1.getSpeed());
System.out.println("tank2的目前速度:"+tank2.getSpeed());
tank1.speedDown(10);
tank2.speedDown(15);
System.out.println("tank1減速目前速度:"+tank1.getSpeed());
System.out.println("tank2減速目前速度:"+tank2.getSpeed());
System.out.println("tank1開火:");
tank1.fire();
System.out.println("tank2開火:");
tank2.fire();
tank2.fire();
tank1.speedDown(220); ?//讓tank1速度為0
tank2.speedDown(220); ?//讓tank2速度為0
System.out.println("tank1剎車目前速度:"+tank1.getSpeed());
System.out.println("tank2剎車目前速度:"+tank2.getSpeed());
System.out.println("tank1的炮彈數(shù)量:"+tank1.getBulletAmount());
System.out.println("tank2的炮彈數(shù)量:"+tank2.getBulletAmount());
}
?
}
?
public?class?Tank {
?double?speed; ?//聲明double型變量speed
?????int?bulletAmount;
???void?speedUp(double?s){
???speed=s+speed;
???}
???void?speedDown(int?d){
???if(speed-d>=0)
????????speed=speed-d;
???else
???speed=0;
???}
???void?setBulletAmount(int?m){
???bulletAmount=m;
???}
???int?getBulletAmount(){
???return?bulletAmount;
???}
???double?getSpeed(){
???return?speed;
???}
?????void?fire(){
?? ???if(bulletAmount>=1){
?? ????bulletAmount=bulletAmount-1;
?? ????System.out.println("打出一發(fā)炮彈");
?? ???}
?? ???else{
?? ????System.out.println("沒有炮彈了,無法開火!");
?? ???}
?????}
?
}
5.實驗結(jié)果
??


