JAVA实验题目8.docx
- 文档编号:28486382
- 上传时间:2023-07-14
- 格式:DOCX
- 页数:14
- 大小:18.62KB
JAVA实验题目8.docx
《JAVA实验题目8.docx》由会员分享,可在线阅读,更多相关《JAVA实验题目8.docx(14页珍藏版)》请在冰豆网上搜索。
JAVA实验题目8
第八章类和对象的扩展之五兆芳芳创作
【实验目的】
(1)类的承继
a.掌握父类及子类的关系及创建办法
b.掌握上转型对象的使用办法
c.掌握子类对象创建进程中与父类机关办法的关系,及super关头字的用法
(2)多态与接口
a.掌握抽象类与抽象办法的概念
b.掌握多态的实现原理及办法
c.了解成员变量的隐藏
d.掌握接口的设计办法
【实验典范】
例1:
(承继)
(1)编写一个圆类Circle,该类拥有:
①一个成员变量
Radius(私有,浮点型);//存放圆的半径;
②两个机关办法
Circle()//将半径设为0
Circle(doubler)//创建Circle对象时将半径初始化为r
③三个成员办法doublegetArea()//获得圆的面积
doublegetPerimeter()//获得圆的周长
voidshow()//将圆的半径、周长、面积输出到屏幕
(2)编写一个圆柱体类Cylinder,它承继于上面的Circle类.还拥有:
①一个成员变量
doublehight(私有,浮点型);//圆柱体的高;
②机关办法
Cylinder(doubler,doubleh)//创建Circle对象时将半径初始化为r
③成员办法
doublegetVolume()//获得圆柱体的体积
voidshowVolume()//将圆柱体的体积输出到屏幕
编写应用程序,创建类的对象,辨别设置圆的半径、圆柱体的高,计较并辨别显示圆半径、圆面积、圆周长,圆柱体的体积.
程序代码:
classCircle{//定义父类园类
privatedoubleradius;//成员变量园半径
Circle(){//机关办法
radius=0.0;
}
Circle(doubler){//机关办法
radius=r;
}
doublegetPerimeter(){//成员办法求园周长
return2*Math.PI*radius;
}
doublegetArea(){//成员办法求园面积
returnMath.PI*radius*radius;
}
voiddisp(){//成员办法显示园半径、周长、面积
System.out.println("圆半径="+radius);
System.out.println("圆周长="+getPerimeter());
System.out.println("圆面积="+getArea());
}
}
classCylinderextendsCircle{//定义子类圆柱类
privatedoublehight;//成员变量园柱高
Cylinder(doubler,doubleh){//机关办法
super(r);
hight=h;
}
publicdoublegetVol(){//成员办法求园柱体积
returngetArea()*hight;
}
publicvoiddispVol(){//成员办法显示园柱体积
System.out.println("圆柱体积="+getVol());
}
}
publicclassProg1{//定义主类
publicstaticvoidmain(String[]args){//主程入口
CircleCi=newCircle(10.0);//生成园类实例
Ci.disp();//调用园类的办法
CylinderCyl=newCylinder(5.0,10.0);//生成圆柱类实例
Cyl.disp();//调用父类办法
Cyl.dispVol();//调用子类办法
}
}
例2:
(重载)
设计一个汽车类Multiplication,在其中定义三个同名的mul办法:
第一个办法是计较两个整数的积;第二个办法是计较两个浮点数的积;第三个办法是计较三个浮点数的积.
程序代码:
classMultiplication{
publicvoidmul(inta,intb){
intm=a*b;
System.out.println(a+"*"+b+"="+m);
}
publicvoidmul(doublea,doubleb){
floatm=(float)(a*b);
System.out.println(a+"*"+b+"="+m);
}
publicvoidmul(doublea,doubleb,doublec){
doublem=a*b*c;
System.out.println(a+"*"+b+"*"+c+"="+m);
}
}
publicclassProg1{
publicstaticvoidmain(String[]args){
Multiplicationtest=newMultiplication();
test.mul(3,4);
test.mul(2.3,3);
test.mul(3,4,5);
}
}
例3:
(接口与多态)
(1)定义一个接口CanFly,描述会飞的办法publicvoidfly();
(2)辨别定义类飞机和鸟,实现CanFly接口.
(3)定义一个测试类,测试飞机和鸟.测试类中定义一个makeFly()办法,让会飞的事物飞起来.
(4)然后在main办法中创建飞机对象和鸟对象,并在main办法中调用makeFly()办法,让飞机和鸟起飞.
程序代码:
interfaceCanFly{
publicvoidfly();
}
classAirPlaneimplementsCanFly{
publicvoidfly(){
System.out.println("airplaneisflying");
}
}
classBirdimplementsCanFly{
publicvoidfly(){
System.out.println("Birdisflying");
}
}
classProg1{
staticvoidmakeFly(CanFlyobj){
obj.fly();
}
publicstaticvoidmain(String[]args){
AirPlaneap=newAirPlane();
Birdb=newBird();
makeFly(ap);
makeFly(b);
}
}
【综合例子】
例:
在第七章综合例子的根本上,编写一个VIP账号的办理
要求:
1、VIPAccount承继Account
2、VIP设置3个等级:
VIP0:
一般账户,不克不及透支
VIP1:
透支上限3000元
VIP2:
透支上限10000元
1、按照透支情况,重写withdraw()办法(重写)
2、两个机关函数,一个与父类Account机关函数的参数相同,另外一个参数增加设置对象的VIP等级(重载)
实现复杂的循环菜单显示,并实现存|取款、修改密码、显示账户余额等功效
(实现的功效和第七章的综合例子相同)
importjava.util.Scanner;
classAccount{
intcustID;
StringcustName;
intcustPWD;
doublecustMoney;
Account(intid,Stringname,intPWD,doublemoney){
custID=id;
custName=name;
custPWD=PWD;
custMoney=money;
}
voiddisplayAccout(){
System.out.println("账号:
"+custID);
System.out.println("户名:
"+custName);
System.out.println("余额:
"+custMoney);
}
booleandeposit(doublemoney){
custMoney+=money;
returntrue;
}
booleanwithdraw(doublemoney){
if(custMoney returnfalse; }else{ custMoney=money; returntrue; } } voidchangePWD(intPWD){ custPWD=PWD; } } classVIPAccountextendsAccount{ intVIPLevel;//VIP特权,透支金额分3个等级为VIP0: 一般客户,不克不及透支,VIP1: 3000,VIP2: 10000 VIPAccount(intid,Stringname,intPWD,doublemoney){//机关函数重载 super(id,name,PWD,money); } VIPAccount(intid,Stringname,intPWD,doublemoney,intlevel){//机关函数重载 super(id,name,PWD,money); VIPLevel=level; } voidsetVIPLevel(intlevel){ VIPLevel=level; } booleanwithdraw(doublemoney){//函数重写 doubleremain=custMoneymoney; switch(VIPLevel) { case0: if(remain<0){ System.out.println("您不是VIP客户,不克不及透支! 您目前的余额为: "+custMoney); returnfalse; }else{ custMoney=money; System.out.println("取款成功,您目前的余额为: "+custMoney); returntrue; } case1: if(remain<3000){ System.out.println("您的VIP等级为1,透支额度不克不及抽过3000元,您目前的余额为: "+custMoney); returnfalse; }else{ custMoney=money; System.out.println("取款成功,您目前的余额为: "+custMoney); returntrue; } case2: if(remain<10000){ System.out.println("您的VIP等级为2,透支额度不克不及抽过10000元,您目前的余额为: "+custMoney); returnfalse; }else{ custMoney=money; System.out.println("取款成功,您目前的余额为: "+custMoney); returntrue; } } returntrue; } } publicclassCustDemo{ publicstaticvoidmain(Stringargs[]){ VIPAccountcust[]=newVIPAccount[4]; cust[0]=newVIPAccount(1001,"Tom",111,400.0f,0); cust[1]=newVIPAccount(1002,"Mike",222,500.0f,1); cust[2]=newVIPAccount(1003,"Bob",333,600.0f,2); cust[3]=newVIPAccount(1004,"Cindy",444,100.0f,1); intind=0; doublemoney; System.out.println("请输入账号: "); Scannersc=newScanner(System.in); longid=sc.nextLong(); for(inti=0;i<4;i++) { if(cust[i].custID==id)ind=i; } while(true){ System.out.println("\n1.存款"); System.out.println("2.取款"); System.out.println("3.修改密码"); System.out.println("4.查询"); System.out.println("5.退出"); sc=newScanner(System.in); switch(sc.nextInt()){ case1: System.out.println("请输入存款金额: "); money=sc.nextDouble(); cust[ind].deposit(money); cust[ind].displayAccout(); break; case2: System.out.println("请输入取款金额: "); money=sc.nextDouble(); if(cust[ind].withdraw(money)) cust[ind].displayAccout(); else System.out.println("您的账号余额缺乏! "); break; case3: System.out.println("请输入新密码: "); cust[ind].custPWD=sc.nextInt(); break; case4: cust[ind].displayAccout(); break; case5: System.out.println("欢送使用xxx银行系统! "); System.exit (1); } } } } 【练习题目】 81(承继与多态)有哺乳动物类mammal,将其作为父类,从其派生出子类猫cat和子类狗dog,基类中有办法speak(). 82(重载)编写一个Java应用程序,从键盘读取用户输入两个字符串,偏重载3个strAdd函数辨别实现这两个字符串的拼接、整数相加和浮点数相加.要进行异常处理,对输入的不合适要求的字符串提示给用户,不克不及使程序解体.(异常处理) 83(接口) 1.利用接口承继完成对生物、动物、人三个接口的定义.其中生物接口定义呼吸抽象办法; 2.动物接口除具备生物接口特征之外,还定义了吃饭和睡觉两个抽象办法; 3.人接口除具备动物接口特征外,还定义了思维和学习两个抽象办法. 4.定义一个学生类实现上述人接口. 84(承继、接口) 实现一个名为Person的类和它的子类Employee,Manager是Employee的子类,设计一个接口Wage,用于涨工资,普通员工一次能涨10%,经理能涨20%. 具体要求如下: (1)接口Wage包含addWage办法,创建类WageImpl用于实现接口Wage (2)Person类中的属性有: 姓名name(String类型),地址address(String类型),定义该类的机关办法; (3)Employee类中的属性有: 工号ID(String型),工资wage(double类型),工龄(int型),定义该类的机关办法; (4)Manager类中的属性有: 级别level(String类型)定义该类的机关办法; (5)编写一个测试类,产生一个员工和一个经理给该员工和经理涨工资,并输出其具有的信息. (提示: 对象类型判断用instanceof) 【综合练习】 模仿综合例子,在第七章综合例子的根本上改良. 要求: 1、增加VIP卡类,它承继于FuelCard a)VIP卡有折扣等级(设置属性成员折扣等级: level);(0级无折扣,1级98折,2级95折) b)按照需要,重写VIP卡的加油的办法(重写); c)模仿综合例子,增加另一个机关函数(重载),包含对level属性值的机关 2、成立4种不合油品类型(对象数组),信息为 油品 G90 G93 G97 D0 单价 3、成立4张加油卡(对象数组),信息为 卡号 车牌 密码 充值总额 余额 等级 12120001 山A66666 123456 1000 800 0 1666 山A16816 654321 3000 2300 1 12023333 山A93398 888888 5000 3800 2 12039999 山A88066 999999 8000 6790 2 4、实现复杂的循环菜单显示,并实现存|充值、加油、显示卡信息、修改密码、更改车牌等功效.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 实验 题目