JAVA实验_题目8.pdf

上传人:赵** 文档编号:21160209 上传时间:2022-06-18 格式:PDF 页数:9 大小:361.21KB
返回 下载 相关 举报
JAVA实验_题目8.pdf_第1页
第1页 / 共9页
JAVA实验_题目8.pdf_第2页
第2页 / 共9页
点击查看更多>>
资源描述

《JAVA实验_题目8.pdf》由会员分享,可在线阅读,更多相关《JAVA实验_题目8.pdf(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、页眉内容第八章类和对象的扩展第八章类和对象的扩展【实验目的】(1) 类的继承a. 掌握父类及子类的关系及创建方法b. 掌握上转型对象的使用方法c. 掌握子类对象创建过程中与父类构造方法的关系,及super 关键字的用法(2) 多态与接口a. 掌握抽象类与抽象方法的概念b. 掌握多态的实现原理及方法c. 了解成员变量的隐藏d. 掌握接口的设计方法【实验范例】例 1: (继承)(1)编写一个圆类 Circle,该类拥有:一个成员变量Radius(私有,浮点型) ;/ 存放圆的半径;两个构造方法Circle( ) / 将半径设为 0Circle(double r )/创建 Circle 对象时将半径

2、初始化为 r三个成员方法 double getArea( ) /获取圆的面积double getPerimeter( ) /获取圆的周长void show( ) /将圆的半径、周长、面积输出到屏幕(2)编写一个圆柱体类Cylinder,它继承于上面的 Circle 类。还拥有:一个成员变量double hight(私有,浮点型) ;/ 圆柱体的高;构造方法Cylinder (double r, double h ) /创建 Circle 对象时将半径初始化为r成员方法double getVolume( ) /获取圆柱体的体积void showVolume( ) /将圆柱体的体积输出到屏幕编写应

3、用程序,创建类的对象,分别设置圆的半径、圆柱体的高,计算并分别显示圆半径、圆面积、圆周长,圆柱体的体积。程序代码:classclass Circle / 定义父类-园类private doubleprivate double radius; / 成员变量-园半径Circle() / 构造方法Circle(doubledouble r) / 构造方法radius = r;radius = 0.0;页脚内容9页眉内容doubledouble getPerimeter() / 成员方法-求园周长doubledouble getArea() / 成员方法-求园面积voidvoid disp() / 成

4、员方法-显示园半径、周长、面积System.out.println(圆半径= + radius);System.out.println(圆周长= + getPerimeter();System.out.println(圆面积= + getArea();returnreturn Math.PI * radius * radius;returnreturn 2 * Math.PI * radius;classclass Cylinder extendsextends Circle / 定义子类-圆柱类public classpublic class Prog1 / 定义主类public stati

5、c voidpublic static void main(String args) / 主程入口Circle Ci = newnew Circle(10.0); / 生成园类实例Ci.disp(); / 调用园类的方法Cylinder Cyl = newnew Cylinder(5.0, 10.0); / 生成圆柱类实例Cyl.disp(); / 调用父类方法Cyl.dispVol(); / 调用子类方法private doubleprivate double hight; / 成员变量-园柱高Cylinder(doubledouble r, doubledouble h) / 构造方法pu

6、blic doublepublic double getVol() / 成员方法-求园柱体积public voidpublic void dispVol() / 成员方法-显示园柱体积System.out.println(圆柱体积= + getVol();returnreturn getArea() * hight;supersuper(r);hight = h;例 2: (重载)设计一个汽车类 Multiplication, 在其中定义三个同名的mul 方法: 第一个方法是计算两个整数的积;第二个方法是计算两个浮点数的积;第三个方法是计算三个浮点数的积。程序代码:classclass Mul

7、tiplication public voidpublic void mul(intint a, intint b) 页脚内容9页眉内容intint m = a * b;System.out.println(a + * + b + = + m);public voidpublic void mul(doubledouble a, doubledouble b) public voidpublic void mul(doubledouble a, doubledouble b, doubledouble c) doubledouble m = a * b * c;System.out.print

8、ln(a + * + b + * + c + = + m);floatfloat m = (floatfloat) (a * b);System.out.println(a + * + b + = + m);public classpublic class Prog1 public static voidpublic static void main(String args) Multiplication test = newnew Multiplication();test.mul(3, 4);test.mul(2.3, 3);test.mul(3, 4, 5);例 3: (接口与多态)(1

9、) 定义一个接口 CanFly,描述会飞的方法 public void fly();(2) 分别定义类飞机和鸟,实现CanFly 接口。(3) 定义一个测试类,测试飞机和鸟。测试类中定义一个 makeFly()方法,让会飞的事物飞起来。(4) 然后在 main 方法中创建飞机对象和鸟对象,并在 main 方法中调用 makeFly()方法,让飞机和鸟起飞。程序代码:interfaceinterface CanFly classclass AirPlane implementsimplements CanFly classclass Bird implementsimplements CanFl

10、y public voidpublic void fly() System.out.println(Bird is flying);public voidpublic void fly() System.out.println(airplane is flying);public voidpublic void fly();页脚内容9页眉内容classclass Prog1 static voidstatic void makeFly(CanFly obj) public static voidpublic static void main(String args) AirPlane ap =

11、 newnew AirPlane();Bird b = newnew Bird();makeFly(ap);makeFly(b);obj.fly();【综合例子】例:在第七章综合例子的基础上,编写一个VIP 账号的管理要求:1、VIPAccount继承 Account2、VIP 设置 3 个等级:VIP0:一般账户,不能透支VIP1:透支上限 3000 元VIP2:透支上限 10000 元1、 根据透支情况,重写 withdraw()方法(重写)2、 两个构造函数,一个与父类Account 构造函数的参数相同,另外一个参数增加设置对象的 VIP 等级(重载)实现简单的循环菜单显示,并实现存|取

12、款、修改密码、显示账户余额等功能(实现的功能和第七章的综合例子相同)importimport java.util.Scanner;classclass Account intint custID;intint custPWD;Account(intint id, String name, intint PWD, doubledouble money) voidvoid displayAccout() System.outout.println(账号: + custID);System.outout.println(户名: + custName);System.outout.println(余额

13、: + custMoney);custID = id;custName = name;custPWD = PWD;custMoney = money;String custName;doubledouble custMoney;页脚内容9页眉内容booleanboolean deposit(doubledouble money)booleanboolean withdraw(doubledouble money)voidvoid changePWD(intint PWD)custPWD = PWD;ifif (custMoneymoney) returnreturn falsefalse;cu

14、stMoney -= money;returnreturn truetrue;elseelsecustMoney += money;returnreturn truetrue;classclass VIPAccount extendsextends AccountVIPAccount (intint id, String name, intint PWD, doubledouble money, intint level) /voidvoid setVIPLevel(intint level) booleanboolean withdraw(doubledouble money) switch

15、switch (VIPLevel)casecase 0:/函数重写doubledouble remain = custMoney - money;VIPLevel = level;supersuper(id,name,PWD,money);VIPLevel = level;构造函数重载intint VIPLevel;VIPAccount (intint id, String name, intint PWD, doubledouble money) /构造函数重载supersuper(id,name,PWD,money);/VIP特权,透支金额分3个等级为VIP0:一般客户,不能透支,VIP1

16、:3000,VIP2:10000页脚内容9页眉内容ifif (remain 0) ifif (remain -3000) ifif (remain -10000) System.outout.println(您的VIP等级为2, 透支额度不能抽过10000元,您目returnreturn falsefalse;custMoney -= money;System.outout.println(取款成功,您目前的余额为: + custMoney);returnreturn truetrue;System.outout.println(您的VIP等级为1,透支额度不能抽过3000元,您目return

17、return falsefalse;custMoney -= money;System.outout.println(取款成功,您目前的余额为: + custMoney);returnreturn truetrue;System.outout.println(您不是VIP客户,不能透支!您目前的余额为: +returnreturn falsefalse;custMoney -= money;System.outout.println(取款成功,您目前的余额为: + custMoney);returnreturn truetrue;custMoney); elseelse casecase 1:

18、前的余额为: + custMoney); elseelse casecase 2:前的余额为: + custMoney); elseelse returnreturn truetrue;publicpublic classclass CustDemo publicpublic staticstatic voidvoid main(String args) VIPAccount cust = newnew VIPAccount4;cust0 = newnew VIPAccount(1001, Tom, 111, 400.0f, 0);cust1 = newnew VIPAccount(1002,

19、 Mike, 222, 500.0f, 1);cust2 = newnew VIPAccount(1003, Bob, 333, 600.0f, 2);cust3 = newnew VIPAccount(1004, Cindy, 444, 100.0f, 1);intint ind = 0;页脚内容9页眉内容doubledouble money;System.outout.println(请输入账号:);Scanner sc = newnew Scanner(System.inin);longlong id = sc.nextLong();forfor (intint i=0; i4; i+)

20、whilewhile (truetrue) System.outout.println(n1.存款);System.outout.println(2.取款);System.outout.println(3.修改密码);System.outout.println(4.查询);System.outout.println(5.退出);sc = newnew Scanner(System.inin);switchswitch(sc.nextInt() casecase 1:System.outout.println(请输入存款金额:);money = sc.nextDouble();custind.d

21、eposit(money);custind.displayAccout();breakbreak;System.outout.println(请输入取款金额:);money = sc.nextDouble();ifif (custind.withdraw(money)custind.displayAccout();System.outout.println(您的账号余额不足!);elseelsebreakbreak;ifif (custi.custID = id) ind=i;casecase 2:casecase 3:System.outout.println(请输入新密码:);custin

22、d.custPWD = sc.nextInt();breakbreak;casecase 4:custind.displayAccout();breakbreak;System.outout.println(欢迎使用xxx银行系统!);System.exit (1);casecase 5:页脚内容9页眉内容【练习题目】8-1 (继承与多态)有哺乳动物类 mammal,将其作为父类,从其派生出子类猫 cat 和子类狗 dog,基类中有方法 speak()。8-2 (重载)编写一个 Java 应用程序,从键盘读取用户输入两个字符串, 并重载 3 个 strAdd函数分别实现这两个字符串的拼接、 整

23、数相加和浮点数相加。 要进行异常处理,对输入的不符合要求的字符串提示给用户,不能使程序崩溃。 (异常处理)8-3 (接口)1.利用接口继承完成对生物、动物、人三个接口的定义。其中生物接口定义呼吸抽象方法;2.动物接口除具备生物接口特征之外,还定义了吃饭和睡觉两个抽象方法;3.人接口除具备动物接口特征外,还定义了思维和学习两个抽象方法。4.定义一个学生类实现上述人接口。8-4 (继承、接口)实现一个名为 Person 的类和它的子类 Employee,Manager 是 Employee 的子类,设计一个接口 Wage,用于涨工资,普通员工一次能涨10,经理能涨 20。具体要求如下:(1)接口

24、Wage包含 addWage方法,创建类 WageImpl用于实现接口 Wage(2)Person 类中的属性有:姓名 name(String 类型) ,地址 address(String 类型) ,定义该类的构造方法;(3)Employee 类中的属性有:工号 ID(String 型) ,工资 wage(double 类型) ,工龄(int型) ,定义该类的构造方法;(4)Manager 类中的属性有:级别 level(String 类型)定义该类的构造方法;(5)编写一个测试类,产生一个员工和一个经理给该员工和经理涨工资,并输出其具有的信息。(提示:对象类型判断用instanceof)页脚

25、内容9页眉内容【综合练习】仿照综合例子,在第七章综合例子的基础上改进。要求:1、 增加 VIP 卡类,它继承于 FuelCarda)VIP 卡有折扣等级 (设置属性成员 折扣等级:level);(0 级无折扣,1 级 98 折,2级 95 折)b)根据需要,重写 VIP 卡的加油的方法(重写) ;c)仿照综合例子,增加另一个构造函数(重载) ,包含对 level 属性值的构造2、 建立 4 种不同油品类型(对象数组) ,信息为油品单价G906.2G936.5G976.9D06.03、建立 4 张加油卡(对象数组),信息为卡号201512120001201512016666201512023333201512039999车牌山 A66666山 A16816山 A93398山 A88066密码123456654321888888999999充值总额1000300050008000余额800230038006790等级01224、实现简单的循环菜单显示,并实现存|充值、加油、显示卡信息、修改密码、更改车牌等功能。页脚内容9

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁