Java实验类与继承.docx

上传人:b****5 文档编号:7334683 上传时间:2023-01-23 格式:DOCX 页数:12 大小:398.49KB
下载 相关 举报
Java实验类与继承.docx_第1页
第1页 / 共12页
Java实验类与继承.docx_第2页
第2页 / 共12页
Java实验类与继承.docx_第3页
第3页 / 共12页
Java实验类与继承.docx_第4页
第4页 / 共12页
Java实验类与继承.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

Java实验类与继承.docx

《Java实验类与继承.docx》由会员分享,可在线阅读,更多相关《Java实验类与继承.docx(12页珍藏版)》请在冰豆网上搜索。

Java实验类与继承.docx

Java实验类与继承

实验报告

实验课程:

Java面向程序设计实验

实验内容:

类与对象

院(系):

计算机学院

专业:

计算机科学与技术(软件工程方向)

班级:

学生姓名:

学号:

指导教师:

2014年3月26日

 

一、实验目的:

1、掌握用类来封装对象的属性和行为的方法;

2、掌握对象的组合和参数传递;

3、掌握类变量与实例变量、类方法与实例方法的区别。

二、实验内容

(-)实验题目一:

编写一个java应用程序,该程序中有两个类:

Tank和Fight具体要求如下:

1、Tank类有一个double类型变量speed,用于刻画坦克的速度;一个int型变量bulletAmount,用于刻画坦克的炮弹数量。

定义了speedUp()和speedDown()方法,体现坦克有加速、减速行为;定义了setBulletAmount(intp)方法,用于设置坦克炮弹的数量;定义了fire()方法,体现坦克有开炮行为。

1.程序源代码:

packagep1;

publicclassTank{

doublespeed;

intbulletAmount;

voidspeedUp(ints){

speed=s+speed;

}

voidspeedDown(intd){

if(speed-d>=0)

speed=speed-d;

else

speed=0;

}

voidsetBulletAmount(intm){

bulletAmount=m;

}

intgetBulletAmount(){

returnbulletAmount;

}

doublegetSpeed(){

returnspeed;

}

voidfire(){

if(bulletAmount>=1){

bulletAmount=bulletAmount-1;

System.out.println("打出一发炮弹");

}

else{

System.out.println("没有炮弹了,无法开火");

}

}

}

packagep1;

publicclassFight{

publicstaticvoidmain(Stringargs[]){

Tanktank1,tank2;

tank1=newTank();

tank2=newTank();

tank1.setBulletAmount(10);

tank2.setBulletAmount(10);

System.out.println("tank1的炮弹数量:

"+tank1.getBulletAmount());

System.out.println("tank2的炮弹数量:

"+tank2.getBulletAmount());

tank1.speedUp(80);

tank2.speedUp(90);

System.out.println("tank1目前的速度:

"+tank1.getSpeed());

System.out.println("tank2目前的速度:

"+tank2.getSpeed());

tank1.speedDown(15);

tank2.speedDown(30);

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();

System.out.println("tank1的炮弹数量:

"+tank1.getBulletAmount());

System.out.println("tank2的炮弹数量:

"+tank2.getBulletAmount());

}

}

2.实验结果:

图1

3、实验课后练习:

(1)改进speedUp方法,使得Tank类的对象调用它能将Speed值超过220;

答:

只需加入如下代码,其实验结果如图2:

voidspeedUp(ints){

if(s+speed<=200)//加入判断语句即可

speed=s+speed;

}

图2:

tank2加速200,超过220,所以tank2数值保持不变

(2)增加一个刹车方法:

voidbrake(),Tank类的对象调用它将speed的值变为0.

答:

只需增加如下代码:

其结果如图3所示:

voidbrake(){

speed=0;

}

System.out.println("tank2加速200:

");

tank2.speedUp(200);

System.out.println("tank2调用brake后:

");

tank2.brake();

图3:

可看出tank2被清零

实验2:

计算机与光盘

1、程序源代码:

packagep1;

publicclassCD{

intsize;

intcontent[];

publicvoidsetSize(intsize){

this.size=size;

content=newint[size];

}

publicintgetSize(){

returnsize;

}

publicint[]getContent(){

returncontent;

}

publicvoidsetContent(int[]b){

intmin=Math.min(content.length,b.length);

for(inti=0;i

content[i]=b[i];

}

}

packagep1;

publicclassComputer{

intdata[];

CDincludeCD;

publicvoidputCD(CDcd){

includeCD=cd;

intsize=includeCD.getSize();

data=newint[size];

}

voidcopyToComputer(){

int[]b=includeCD.getContent();

intmin=Math.min(data.length,b.length);

for(inti=0;i

data[i]=b[i];

}

 

publicvoidaddData(intm){

for(inti=0;i

data[i]=data[i]+m;

}

}

voidcopyToCD(){

includeCD.setContent(data);

}

voidshowData(){

for(inti=0;i

System.out.printf("%3d",data[i]);

}

}

}

packagep1;

publicclassUser{

publicstaticvoidmain(Stringargs[]){

CDdataCD=newCD();

intb[]={1,2,3,4,5,6,7,8};

dataCD.setSize(b.length);

dataCD.setContent(b);

inta[]=dataCD.getContent();

System.out.println("dataCD上的内容:

");

for(inti=0;i

System.out.printf("%3d",a[i]);

ComputercomputerIMB=newComputer();

computerIMB.putCD(dataCD);

System.out.println("\n将dataCD的数据复制到计算机:

computerIMB");

computerIMB.copyToComputer();

System.out.println("\ncomputerIMB上的内容:

");

computerIMB.showData();

intm=12;

System.out.println("\ncomputerIMB将每个数据增加"+m);

computerIMB.addData(m);

System.out.println("computerIMB将增值后的数据复制到CD:

dataCD");

computerIMB.copyToCD();

System.out.println("dataCD上的内容:

");

a=dataCD.getContent();

for(inti=0;i

System.out.printf("%3d",a[i]);

}

}

2、实验结果:

图4

2、实验课后练习:

主类中再添加一个CD的对象,然后将计算机中的数据(data数组)复制到CD对象中。

答:

只需增加如下代码,实验结果如图5

publicint[]getData(){

returndata;

}

CDnewCD=newCD();

computerIMB.copyToCD();

newCD.setSize(computerIMB.getData().length);

newCD.setContent(computerIMB.getData());

System.out.println("\nnewCD上的内容:

");

a=newCD.getContent();

for(inti=0;i

System.out.printf("%3d",a[i]);

图5

实验3家族的姓氏

1、程序源代码:

packagep1;

publicclassFamilyPerson{

staticStringsurname;

Stringname;

publicstaticvoidsetSurname(Strings){

surname=s;

}

publicvoidsetName(Strings){

name=s;

}

}

packagep1;

publicclassMainClass{

publicstaticvoidmain(Stringargs[]){

FamilyPerson.surname="李";

FamilyPersonfather,sonOne,sonTwo;

father=newFamilyPerson();

sonOne=newFamilyPerson();

sonTwo=newFamilyPerson();

father.setName("向阳");

sonOne.setName("抗日");

sonTwo.setName("抗战");

System.out.println("父亲:

"+father.surname+father.name);

System.out.println("大儿子:

"+sonOne.surname+sonOne.name);

System.out.println("二儿子:

"+sonTwo.surname+sonTwo.name);

father.setSurname("张");

System.out.println("父亲:

"+father.surname+father.name);

System.out.println("大儿子:

"+sonOne.surname+sonOne.name);

System.out.println("二儿子:

"+sonTwo.surname+sonTwo.name);

}

}

2、实验结果:

图6

3、实验后的练习

(1)代码3是否可以是FamilyPerson.setSurname(“张”);

答:

可以,因为该方法是类方法可以用类名调用。

(2)能否将主类中的代码:

sonOne.setName(“抗日”);

修改为:

FamilyPerson.setName(“抗日”);

答:

不行,因为FamilyPerson只是个类名,不是具体的实例。

只有静态方法才能被类名调用。

二.个人小结

通过本次实验,了解到了类与对象,使用new运算符和类的构造方法创建对象,熟悉了类方法、类变量,实例方法、实例变量,明白了Java程序是由若干个类所构成。

了解到了对象的组合以及参数传递,在实验过程中,由于理解题目错误,导致离题,经过老师的提醒,终于写出了正确答案。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1