java实验及答案_JAVA实验4-1答案

GDOU-B-11-112

广东海洋大学学生实验报告书(学生用表)

实验名称 学院(系) 学生姓名

实验四(1). 类与对象(第1

部分) 信息学院 彭德权

专业

Java程序设计与开发

课程名称 课程号 16232204

技术 计算机科学与技术

钟海楼 04019

班级 计科1131 2015年

实验日期

9月24日

学号 201311621124 实验地点

一、实验目的

(1)学习使用Java中的类来封装对象的属性和功能; (2)学习掌握Java中对象的组合及参数传递。

二、实验任务

完成实验三指导上实验1、实验2的实验任务。

三、实验仪器设备和材料

安装有J2SE开发工具的PC机。

四、实验内容和步骤 实验1 机动车

编写一个Java应用程序,改程序中有两个类:Vehicle(用于刻画机动车)和User(主类)。具体要求如实验指导所示。

代码如下: Vehicle.java

public class Vehicle{ private double speed; private int power; void speedUp(int s){

this.speed=this.speed+s; }

void speedDown(int s){

this.speed=this.speed-s; }

void setPower(int p){ this.power=p; }

int getPower(){

return this.power;

}

double getSpeed(){ return this.speed; } }

User.java

public class User{

public static void main(String args[]){ Vehicle car1,car2; car1=new Vehicle(); car2=new Vehicle(); car1.setPower(128); car2.setPower(76);

System.out.println(\的功率是:\ System.out.println(\的功率是:\ car1.speedUp(80); car2.speedUp(80);

System.out.println(\目前的速度:\ System.out.println(\目前的速度:\ car1.speedDown(10); car2.speedDown(20);

System.out.println(\目前的速度:\ System.out.println(\目前的速度:\ } }

运行结果:

课后的练习

(1) 改进speedUp()方法,使得Vehicle类的对象加速时不能将speed值超过200。

void speedUp(int s){

if(this.speed+s>200){

System.out.println(\速度不能超过200\ }

else{

this.speed=this.speed+s; } }

在主方法中更改为car1.speedUp(210); 运行结果:

(2) 改进speedDown()方法,使得Vehicle类的对象在减速时不能将speed值小于0。

void speedDown(int s){ if(this.speed-s<0){

System.out.println(\速度不能少于0\ } else{

this.speed=this.speed-s; } }

在主方法中更改为car1.speedUp(80);

car1.speedDown(90);

运行结果:

(3) 增加一个刹车方法void brake(),Vehicle类的对象调用它将speed的值变成0。

void brake(){ this.speed=0; }

在主方法中增加语句:

System.out.println(\刹车\ car1.brake();

System.out.println(\目前的速度:\运行结果:

实验2 家中的电视

编写一个Java应用程序,模拟家庭购买一台电视,即家庭将电视作为自己的一个成员,即通过调用一个方法将某个电视的引用传递给自己的电视成员。具体要求如实验指导所示。

代码如下: TV.java

public class TV{ int channel;

void setChannel(int m){ if(m>=1){

channel=m; } }

int getChannel(){ return channel; }

void showProgram(){ switch(channel){

case 1:System.out.println(\综合频道\ break;

case 2:System.out.println(\经济频道\ break;

case 3:System.out.println(\文艺频道\ break;

case 4:System.out.println(\国际频道\ break;

case 5:System.out.println(\体育频道\ break;

default:System.out.println(\不能收看\频道\ }

} }

Family.java

public class Family{ TV homeTV;

void buyTV(TV tv){ this.homeTV=tv; }

void remoteControl(int m){ homeTV.setChannel(m); }

void seeTV(){

homeTV.showProgram(); } }

MainClass.java

public class MainClass{

public static void main(String args[]){ TV haierTV=new TV(); haierTV.setChannel(5);

System.out.println(\的频道是\ Family zhangSanFamily=new Family(); zhangSanFamily.buyTV(haierTV);

System.out.println(\开始看电视节目\ zhangSanFamily.seeTV(); int m=2;

System.out.println(\将电视更换到\频道\ zhangSanFamily.remoteControl(m);

System.out.println(\的频道是\ System.out.println(\再看电视节目\ zhangSanFamily.seeTV(); } }

运行结果:

课后的练习

(1) 省略代码2程序能否通过编译?若能通过编译,程序输出的结果是怎样的?

能编译通过。结果如下图,原因是对象内的元素channel是int型数据,默认值为0。 运行结果:

(2) 在朱类main()方法的最后增添下列代码,并解释运行效果。

Family liiFamily=new Family(); lisiFamily.buyTV(haierTV); lisiFamily.seeTV();

因为zhangSanFamily和lisiFamily引用了同一个对象成员haierTV, 导致当zhangSanFamily调用方法remoteControl()改变channel的值时, lisiFamily中的对象成员的channel值也会改变。

运行结果:

成绩 指导教师

孙兵

日期 2015年9月26日

第 页,共 页

注:请用A4纸书写,不够另附纸。

  • 12
    点赞
  • 73
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java程序设计》课程实验指导书程序代码(答案)(实验四:java继承与多态),个人原创,仅供参考与交流。 希望多多交流,共同进步! 实验java继承与多态 一、实验目的: 掌握继承、多态的概念与实现方法; 掌握包和接口的定义和使用方法; 了解JAVA语言实现多继承的途径; 二、实验内容: 1.分别编写两个类Point2D,Point3D来表示二维空间和三维空间的点,使之满足下列要求: (1) Point2D有两个整型成员变量x, y (分别为二维空间的X,Y方向坐标),Point2D的构造方法要实现对其成员变量x, y的初始化。 (2)Point2D有一个void型成员方法offset(int a, int b),它可以实现Point2D的平移。 (3)Point3D是Point2D的直接子类,它有有三个整型成员变量x,y,z (分别为三维空间的X,Y,Z方向坐标),Point3D有两个构造方法:Point3D(int x,int y,int z)和Point3D(Point2D p,int z),两者均可实现对Point3D的成员变量x, y,z的初始化。 (4)Point3D有一个void型成员方法offset(int a, int b,int c),该方法可以实现Point3D的平移。 (5)在Point3D中的主函数main()中实例化两个Point2D的对象p2d1,p2d2,打印出它们之间的距离,再实例化两个Point2D的对象p3d1,p3d2,打印出他们之间的距离。 2.定义抽象类Shape,抽象方法为showArea(),求出面积并显示,定义矩形类Rectangle,正方形类Square,圆类 Circle,根据各自的属性,用showArea方法求出各自的面积,在main方法中构造3个对象,调用showArea方法。 定义接口DiagArea,其中包含方法double getDiagonal()求对角线长, double getArea()求面积,定义一个矩形类,实现此接口,并自行扩充成员变量和方法,定义一个正方形类继承矩形类(如矩形有长w和宽h,正方形有边x,并有相应的构造函数,有一个方法中一次直接显示边长、面积和对角线长),在另一类中的主方法里使用测试该类。 三、实验要求: 1. 能实现类的继承关系; 2. 用多种方法创建各个类的对象; 3. 程序应包括各个被调用方法的执行结果的显示。 4. 写出实验报告。要求记录编译和执行Java程序当中的系统错误信息提示,并给出解决办法。(附运行界面、源代码)。 四、实验步骤: 1.(第1题)定义Point2D,及定义它的属性和方法; 定义子类Point3D,及定义它的属性和方法;在Point3D中的主函数main()中实例化两个Point2D的对象,并通过这两个对象调用它们的属性和方法,输出方法执行结果。 2.(第2题)定义抽象类Shape,抽象方法为showArea(),再定义矩形类Rectangle,正方形类Square,圆类 Circle,和各自的属性。定义主类、主方法,在main方法中构造3个对象,调用showArea方法;定义接口DiagArea,其中包含方法double getDiagonal(),在主main方法中输出方法执行结果。 五、自做作实验 1.定义一个描述人的基本类,该类包括人的性别和出生日期两个数据成员,以及设置和获取这些属性值的方法成员;再定义一个大学生类,使大学生类具有人的所有属性外,还具有姓名、学号,大学入学成绩,籍贯属性以及设置和获取这些属性值的方法成员;编写完整的程序,完成一个具有班级学生信息管理功能的程序。 2创建一个接口Shape,其中有抽象方法area,类Circle 、Rectangle实现area方法计算其面积并返回。又有Star实现Shape的area方法,其返回值是0,Star类另有一返回值boolean型方法isStar;在main方法里创建一个Vector,根据随机数的不同向其中加入Shape的不同子类对象(如是1,生成Circle对象;如是2,生成Rectangle对象;如是3,生成Star对象)。然后将Vector中元素依次取出,判断其是否为Star类。如是返回其是个Star。否则返回其面积。 3..学校中有老师和学生两类人,而在职研究生既是老师又是学生,对学生的管理和对教师的管理在他们身上都有体现。 1)设计两个信息管理接口StudentManageInterface和TeacherManageInterface。其中,StudentInterface接口包括setFee()方法和getFee()方法,分别用于设置和获取学生的学费;TeacherInterface接口包括setPay()方法和getPay()方法,分别用于设置和获取教师的工资 2) 定义一个研究生类Graduate,实现StudentInterface接口和TeacherInterface接口,它定义的成员变量有name(姓名)、sex(性别)、age(年龄)、fee(每学期学费)、pay(月工资)。 3) 创建一个姓名为“zhangsan”的研究生,统计他的年收入和学费,如果收入减去学费不足2000元,则输出“provide a loan”(需要贷款)信息。 提示: 1)定义两个接口,分别在其中申明两个方法。 2)定义主类Graduate,实现这两个接口。 3)定义主类的成员变量,和构造方法。 4)给出四个接口方法的实现。 5)给出一个计算是否需要贷款的方法,在里面统计年收入和学费,并输出是否需要贷款的信息。 6)写main方法。在其中创建一个姓名为“zhangsan”的研究生,调用计算是否需要贷款的方法。
【练习题】01.类的成员变量 猜数字游戏 一个类A有一个成员变量v 有一个初值100。定义一个类 对A类的成员变量v 进行猜。如果大了则提示大了 小了则提示小了。等于则提示猜测成功。 【练习题】02.类的成员变量 请定义一个交通工具(Vehicle)的类 其中有: 属性 速度(speed) 体积(size)等等 方法 移动(move()) 设置速度(setSpeed(int speed)) 加速speedUp(),减速speedDown()等等. 最后在测试类Vehicle中的main()中实例化一个交通工具对象 并通过方法给它初始化sp eed,size的值 并且通过打印出来。另外 调用加速 减速的方法对速度进行改变。 【练习题】03.类的成员变量与方法、构造方法 在程序中 经常要对时间进行操作 但是并没有时间类型的数据。那么 我们可以自己实现 一个时间类 来满足程序中的需要。 定义名为MyTime的类 其中应有三个整型成员 时 hour 分 minute 秒 second 为了保 证数据的安全性 这三个成员变量应声明为私有。 为MyTime类定义构造方法 以方便创建对象时初始化成员变量。 再定义diaplay方法 用于将时间信息打印出来。 为MyTime类添加以下方法 addSecond(int sec) addMinute(int min) addHour(int hou) subSecond(int sec) subMinute(int min) subHour(int hou) 分别对时、分、秒进行加减运算。 【练习题】04.构造方法 编写Java程序 模拟简单的计算器。 定义名为Number的类 其中有两个整型数据成员n1和n2 应声明为私有。编写构造方法 赋 予n1和n2初始值 再为该类定义加 addition 、减 subtration 、乘 multiplication 、 除 division 等公有成员方法 分别对两个成员变量执行加、减、乘、除的运算。 在main方法中创建Number类的对象 调用各个方法 并显示计算结果。 【练习题】05.构造方法 编写Java程序 用于显示人的姓名和年龄。 定义一个人类 Person 该类中应该有两个私有属性 姓名 name 和年龄 age 。定义构造 方法 用来初始化数据成员。再定义显示 display 方法 将姓名和年龄打印出来。 在main方法中创建人类的实例 然后将信息显示。 【练习题】06.get方法和set方法 定义一个类 该类有一个私有成员变量 通过构造方法将其进行赋初值 并提供该成员的g etXXX()和setXXX()方法 提示 假设有private String name。则有 public void setName(String name){ this.name = name。 } public String getName(){ return this.name。 } 【练习题】07.构造方法与重载 为"无名的粉"写一个类 class WuMingFen 要求 1.有三个属性 面码:String theMa 粉的分量(两) int quantity 是否带汤 boolean likeSoup 2.写一个构造方法 以便于简化初始化过程 如 WuMingFen f1 = new WuMingFen("牛肉",3,true)。 3.重载构造方法 使得初始化过程可以多样化 WuMingFen f2 = new WuMingFen("牛肉",2)。 4.如何使得下列语句构造出来的粉对象是酸辣面码、2两、带汤的 WuMingFen f3 = new WuMingFen()。 5.写一个普通方法 check() 用于查看粉是否符合要求。即 将对象的三个属性打印在控 制台上。 【练习题】08.构造方法的重载 定义一个名为Vehicles 交通工具 的基类 该类中应包含String类型的成员属性brand 商 标 和color 颜色 还应包含成员方法run 行驶 在控制台显示"我已经开动了" 和showI nfo 显示信息 在控制台显示商标和颜色 并编写构造方法初始化其成员属性。 编写Car 小汽车 类继承于Vehicles类 增加int型成员属性seats 座位 还应增加成员方 法showCar 在控制台显示小汽车的信息 并编写构造方法。 编写Truck 卡车 类继承于Vehicles类 增加float型成员属性load 载重 还应增加成员 方法showTruck 在控制台显示卡车的信息 并编写构造方法。 在main方法中测试以上各类。 【练习题】09.构造方法与重载 定义一个网络用户类 要处理的信息有用户ID、用户密码、email地址。在建立类的实例 时 把
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值