JAVA实验报告圆类动物继承人类继承DOC.docx
- 文档编号:28089819
- 上传时间:2023-07-08
- 格式:DOCX
- 页数:16
- 大小:117.11KB
JAVA实验报告圆类动物继承人类继承DOC.docx
《JAVA实验报告圆类动物继承人类继承DOC.docx》由会员分享,可在线阅读,更多相关《JAVA实验报告圆类动物继承人类继承DOC.docx(16页珍藏版)》请在冰豆网上搜索。
JAVA实验报告圆类动物继承人类继承DOC
《Java程序设计》实验报告
2014年10月17日
姓名
班级
软工班
学号
13139042
课程
名称
Java语言程序设计
实验项目名称
构造方法与继承
指导教师
一、实验目的:
。
1.编写程序定义圆类Circle,把圆的性质和行为用代码块封装起来。
圆的性质包括圆的半径,圆心坐标,行为包括计算圆面积,计算圆周长、设置半径、获取半径、计算圆个数。
实例化若干个圆对象,调用相应方法计算出圆面积、圆周长并计圆个数。
2.编程实现类的继承。
编写父类People,子类Student继承自人类。
人类具有姓名,性别,年龄等性质,还具有吃和说的行为。
学生类继承父类,还拥有学号性质和学习行为。
构造人类和学生类的对象,调用吃、说、学习的方法输出有关信息。
3.使用Java的继承关系来描述动物世界的特征和关系。
(1)抽象出项目问题中的对象:
动物、老鼠、熊猫。
(2)抽象出每种对象所具有的性质:
名字和食物。
(3)抽象出每种对象所具有的行为,动物具有吃的行为和睡觉的行为,老鼠除具有动物行为外还具有打洞行为。
(4)抽象出继承关系,老鼠类和熊猫类作为子类继承父类动物类,子类继承父类的属性和方法。
4.定义汽车类,其中包含所有汽车共有的属性如名字、排量、油耗、时速等,包含行为如点火、熄火、前进、倒退、鸣笛等,然后在测试类中用定义的类来创建对象,输出该对象的属性和行为信息。
5按以下要求编写程序
(1)创建一个正方形类,添加正方形的边作为成员变量
(2)在正方形类中添加两种方法分别计算正方形的周长和面积
(3)编程在测试类中输出一个正方形的周长和面积
二、实验原理(可以流程图的形式出现,加以文字说明)
1.定义圆类Circle.
(1)抽象出Circle类包含成员变量radius、x和y,它们的类型均为double,代表了圆的半径和坐标属性。
成员方法setRadius()、getRadius()、calcArea()、calcGirth(),分别实现设置半径、返回半径、计算面积、计算周长的行为。
其中setRadius()方法用于给半径赋值没有返回值,类型为void。
calcArea()、calcGirth()、getRadius()方法用于计算和返回半径值,类型为double。
(2)声明用于保存圆数量的成员变量num,由Circle类创建任意圆对象时num值均要加1。
num变量应该是被所有圆对象共享,所以使用static关键字声明num为静态变量。
使用static声明静态方法getNum()用来返回num值,返回类型为int。
具体声明语句为:
privatestaticintnum;
publicstaticintgetNum(){returnnum;}
(3)使用staticfinal关键字声明静态的符号常量PI(符号常量通常定义为大写字母),并给其赋值为3.14159,该常量可以被所有Cirlce类的圆对象使用,具体声明语句为:
publicstaticfinaldoublePI=3.14159;
(4)定义两个构造方法,一个无参的构造方法和一个带参数构造方法,其中带参构造方法对圆对象进行初始化,将参数r传递给圆对象的成员变量radius,。
无参构造方法则不初始任何变量。
若需要在圆对象被创建时将圆的数量num增加,可以在构造方法里对num变量进行增加。
(5)程序的入口方法main,在该方法中实例化若干个圆对象,并调用该对象的setRadius()、getRadius()、calcArea()、calcGirth()、getNum()方法来输出该对象的半径、周长、面积属性及圆个数。
2.实现类的继承.
(1)人类是学生类的父类,人类具有姓名,性别,年龄等性质,学生类是人类的子类也具有如上性质,并且学生类还具有学号这一特性。
所以人所具有的共性都封装在人类这一父类中,学生类不但继承了人类的共性还具有自己的特有属性学号。
人类中具有了吃和说的行为,学生也继承了这些行为,并且学生还具有了学习这一行为。
根据以上分析定义两个类People和Student,People类包括成员变量name、sex、age属性,成员方法eat()和speek()。
其中name、sex、age属性的访问控制符定义为protected,protected修饰的成员可以被本包中的类以及其子类继承访问。
eat()、speek()方法的访问控制符定义为public,public修饰的方法其访问权限最大可以被所有类访问。
(2)使用extends关键字实现继承,学生类继承人类共有的属性和方法,此外具有stuNo学号属性和learn()学习方法。
(3)父类People中定义的构造方法负责对name、sex、age变量初始化,子类Student中定义构造方法继承父类构造并对stuNo属性初始化。
在Student类的构造方法的第一句使用super(name,sex,age)语句显式调用父类构造,保证父类构造被调用之后再调用子类构造。
(4)编写程序的入口方法main,在该方法中实例化人类对象和学生对象,并调用对象的相应方法输出信息。
3.描述动物世界的特征和关系.
(1)动物世界的名字和食物是共有的属性,吃和睡觉是共有的行为。
定义Animal类,在该类中定义成员变量name和food,成员方法eat()和sleep()。
根据封装性的要求将name和food属性定义为private私有的,保证该属性只能被在本类内部访问,其他类或派生类要访问该属性可以通过public公有的方法setName()、getName()、setFood()、getFood()进行访问,其中setXXX()方法用于给属性赋值,getXXX()方法用于返回属性。
(2)定义老鼠类Mouse和熊猫类Panda,这两类均继承自Animal类,继承动物类的name和food属性以及eat()和sleep()方法。
Mouse类和Panda类在构造方法中调用setName()和setFood()方法对名称和食物属性初始化。
(3)老鼠类定义打洞方法dig()输出信息。
(4)定义测试类AnimalTest,编写程序入口main()方法,在该方法中创建老鼠和熊猫对象,调用相应方法输出信息。
4.汽车的属性和行为。
(1)建立汽车类Car,汽车属性:
名字,排量,油耗,时速分别记作成员变量name,pailia,oilconsume,speed.均用private修饰。
定义公共方法点火,熄火,前进,倒退,鸣笛分别为fire(),unfire(),go(),back(),whistle().
(2)创建有参构造函数car(Stringname,intpailia,intoilconsume,intspeed)初始化属性,创建类事例car输出属性和行为。
5.求正方形周长和面积。
(1)建立Square类,定义边长为sl,用private修饰。
创建方法grith()和are()分别求周长和面积。
(2)创建有参构造方法square(intsl),初始化边长,创建圆对象并输出周长和面积。
三、实验代码
1.定义圆类Circle.
publicclassCircle{
privatedoubleradius;//圆的半径
privatedoublex;//横坐标
privatedoubley;//纵坐标
privatestaticintnum;//圆的个数
privatestaticfinaldoublePI=3.14159;
publicdoublegetRadius(){//返回半径
returnradius;
}
publicvoidsetRadius(doubleradius){//设置半径
this.radius=radius;
}
publicdoublecalcArea(){//计算圆面积
returnPI*this.radius*this.radius;
}
publicdoublecalcGrith(){//计算圆周长
return2*PI*this.radius;
}
publicstaticintgetNum(){//返回圆的个数
returnnum;
}
publicCircle(){//无参数构造方法
num++;
}
publicCircle(doubleradius,doublex,doubley){//带参数构造方法
if(radius<0){
System.out.println("半径不可以为负数!
");
}
else{//初始化圆的属性
this.radius=radius;
this.x=x;
this.y=y;
num++;
}
}
publicstaticvoidmain(String[]args){
Circlecircle1=newCircle(10,1,1);//创建对象圆1
Circlecircle2=newCircle(20,1,1);//创建对象圆2
Circlecircle3=newCircle(30,1,1);//创建对象圆3
System.out.print("圆1的半径:
"+circle1.getRadius()+"\t");
System.out.print("圆1的面积:
"+circle1.calcArea()+"\t");
System.out.println("圆1的周长:
"+circle1.calcGrith());
System.out.print("圆2的半径:
"+circle2.getRadius()+"\t");
System.out.print("圆2的面积:
"+circle2.calcArea()+"\t");
System.out.println("圆2的周长:
"+circle2.calcGrith());
System.out.print("圆3的半径:
"+circle3.getRadius()+"\t");
System.out.print("圆3的面积:
"+circle3.calcArea()+"\t");
System.out.println("圆3的周长:
"+circle3.calcGrith());
System.out.println("圆的个数:
"+Circle.getNum());
}
}
2.实现类的继承.
classPeople{//父类——人
protectedStringname;//姓名
protectedStringsex;//性别
protectedintage;//年龄
protectedStringgetName(){//返回姓名
returnname;
}
protectedvoidsetName(Stringname){//设置姓名
this.name=name;
}
protectedStringgetSex(){//返回性别
returnsex;
}
protectedvoidsetSex(Stringsex){//设置性别
this.sex=sex;
}
protectedintgetAge(){//返回年龄
returnage;
}
protectedvoidsetAge(intage){//设置年龄
this.age=age;
}
publicstaticvoideat(){//吃
System.out.print("我在吃饭!
");
}
publicstaticvoidspeak(){//说话
System.out.print("我在说话!
");
}
publicPeople(Stringname,Stringsex,intage){//初始化共有属性
this.name=name;
this.sex=sex;
this.age=age;
}
}
classStudentextendsPeople{//子类——学生
protectedlongstuNo;//学号
protectedlonggetStuNo(){//返回学号
returnstuNo;
}
protectedvoidsetStuNo(longstuNo){//设置学号
this.stuNo=stuNo;
}
publicstaticvoidlearn(){//学习方法
System.out.println("我的学习方法!
");
}
publicStudent(Stringname,Stringsex,intage,longstuNo){//构造方法
super(name,sex,age);
this.stuNo=stuNo;
}
}
publicclassTestPeople{//测试类
publicstaticvoidmain(String[]args){
Studentstudent=newStudent("张一飞","男",18,13130001);
System.out.print("姓名:
"+student.getName()+"");
System.out.print("性别:
"+student.getSex()+"");
System.out.print("年龄:
"+student.getAge()+"");
System.out.print("学号:
"+student.getStuNo()+"");
People.eat();//吃
People.speak();//说话
Student.learn();//学习方法
}
}
3.描述动物世界的特征和关系.
classAnimal{//动物类
privateStringname;//名字
privateStringfood;//食物
publicStringgetName(){//返回名字
returnname;
}
publicvoidsetName(Stringname){//设置名字
this.name=name;
}
publicStringgetFood(){//返回食物
returnfood;
}
publicvoidsetFood(Stringfood){//设置食物
this.food=food;
}
publicstaticvoidEat(){//吃
System.out.print("我在吃饭");
}
publicstaticvoidSleep(){//睡觉
System.out.print("我在睡觉");
}
publicAnimal(Stringname,Stringfood){//构造方法
this.name=name;
this.food=food;
}
}
classMouseextendsAnimal{//老鼠类
publicMouse(Stringname,Stringfood){//构造方法
super(name,food);
}
publicstaticvoiddig(){//打洞
System.out.println("我在打洞");
}
}
classPandaextendsAnimal{//熊猫类
publicPanda(Stringname,Stringfood){//构造方法
super(name,food);
}
}
publicclassAnimalTest{//测试类
publicstaticvoidmain(Stringargs[]){
Pandapanda=newPanda("熊猫","竹叶");//实例化熊猫
System.out.print("名字:
"+panda.getName()+"\t");
System.out.println("食物:
"+panda.getFood()+"\t");
Panda.Eat();//吃
Panda.Sleep();//睡觉
System.out.println();
Mousemouse=newMouse("老鼠","大米");//实例化老鼠
System.out.print("名字:
"+mouse.getName()+"\t");
System.out.print("食物:
"+mouse.getFood()+"\t");
Mouse.Eat();//吃
Mouse.Sleep();//睡觉
Mouse.dig();//打洞
}
}
4.汽车的基本属性和行为.
publicclassCar{//汽车类
privateStringname;//定义名字
privateintpailia;//定义排量
privateintoilconsume;//定义油耗
privateintspeed;//定义时速
publicStringgetName(){//返回名字
returnname;
}
publicvoidsetName(Stringname){//设置名字
this.name=name;
}
publicintgetPailia(){//返回排量
returnpailia;
}
publicvoidsetPailia(intpailia){//设置排量
this.pailia=pailia;
}
publicintgetOilconsume(){//返回油耗
returnoilconsume;
}
publicvoidsetOilconsume(intoilconsume){//设置油耗
this.oilconsume=oilconsume;
}
publicintgetSpeed(){//返回时速
returnspeed;
}
publicvoidsetSpeed(intspeed){//设置时速
this.speed=speed;
}
publicstaticvoidfire(){//点火
System.out.print("点火!
");
}
publicstaticvoidoutfire(){//熄火
System.out.print("熄火!
");
}
publicstaticvoidgo(){//前进
System.out.print("前进!
");
}
publicstaticvoidback(){//倒退
System.out.print("倒退!
");
}
publicstaticvoidwhistle(){//鸣笛
System.out.print("鸣笛!
");
}
publicCar(Stringname,intpailia,intoilconsume,intspeed){//构造方法
this.name=name;
this.pailia=pailia;
this.oilconsume=oilconsume;
this.speed=speed;
}
Publicstaticvoidmain(Stringargs[]){
Carcar=newCar("宝马",100,50,100);//实例化一个汽车
System.out.println("汽车的属性:
");
System.out.println();
System.out.print("汽车品牌:
"+car.getName()+"\t");
System.out.print("排量:
"+car.getPailia()+"ml"+"\t");
System.out.print("油耗:
"+car.getOilconsume()+"ml/h"+"\t");
System.out.println("时速:
"+car.getSpeed()+"km/h");
System.out.println();
System.out.println();
System.out.println("汽车的行为:
");
System.out.println();
Car.fire();//点火
Car.outfire();//熄火
Car.go();//前进
Car.back();//倒退
Car.whistle();//鸣笛
}
}
5.求正方形的周长和面积.
classSqure{//定义正方形类
privateintsl;//定义边长
publicintgetSl(){//返回边长
returnsl;
}
publicvoidsetSl(intsl){//设置边长
this.sl=sl;
}
publicintgrith(){//求周长
return4*this.sl;
}
publicintarea(){//求面积
returnthis.sl*this.sl;
}
publicSqure(intsl){//构造方法
this.sl=sl;
}
}
publicclassTest{//测试类
publicstaticvoidmain(Stringargs[]){
Squres=newSqure(5);
System.out.print("正方形边长:
"+s.getSl()+"\t"+"周长:
"+s.grith()+"\t");System.out.println("面积:
"+s.area());
}
}
四、实验过程原始记录(数据、图表、计算等)
注:
此次报告没有相关数据,实验过程详见第二部分实验原理。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 实验 报告 类动物 继承 人类 DOC