




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第八章类和对象的扩展【实验目的】(1) 类的继承a. 掌握父类及子类的关系及创建方法b. 掌握上转型对象的使用方法c. 掌握子类对象创建过程中与父类构造方法的关系,及super关键字的用法(2) 多态与接口a. 掌握抽象类与抽象方法的概念b. 掌握多态的实现原理及方法c. 了解成员变量的隐藏d. 掌握接口的设计方法【实验范例】例1:(继承)(1)编写一个圆类Circle,该类拥有:一个成员变量Radius(私有,浮点型);/ 存放圆的半径;两个构造方法Circle( ) / 将半径设为0 Circle(double r )/创建Circle对象时将半径初始化为r 三个成员方法double getArea( ) /获取圆的面积double getPerimeter( ) /获取圆的周长void show( ) /将圆的半径、周长、面积输出到屏幕(2)编写一个圆柱体类Cylinder,它继承于上面的Circle类。还拥有:一个成员变量double hight(私有,浮点型);/ 圆柱体的高;构造方法Cylinder (double r, double h ) /创建Circle对象时将半径初始化为r 成员方法double getVolume( ) /获取圆柱体的体积void showVolume( ) /将圆柱体的体积输出到屏幕编写应用程序,创建类的对象,分别设置圆的半径、圆柱体的高,计算并分别显示圆半径、圆面积、圆周长,圆柱体的体积。程序代码:class Circle / 定义父类-园类private double radius; / 成员变量-园半径Circle() / 构造方法radius = 0.0;Circle(double r) / 构造方法radius = r;double getPerimeter() / 成员方法-求园周长return 2 * Math.PI * radius;double getArea() / 成员方法-求园面积return Math.PI * radius * radius;void disp() / 成员方法-显示园半径、周长、面积System.out.println(圆半径= + radius);System.out.println(圆周长= + getPerimeter();System.out.println(圆面积= + getArea();class Cylinder extends Circle / 定义子类-圆柱类private double hight; / 成员变量-园柱高Cylinder(double r, double h) / 构造方法super(r);hight = h;public double getVol() / 成员方法-求园柱体积return getArea() * hight;public void dispVol() / 成员方法-显示园柱体积System.out.println(圆柱体积= + getVol();public class Prog1 / 定义主类public static void main(String args) / 主程入口Circle Ci = new Circle(10.0); / 生成园类实例Ci.disp(); / 调用园类的方法Cylinder Cyl = new Cylinder(5.0, 10.0); / 生成圆柱类实例Cyl.disp(); / 调用父类方法Cyl.dispVol(); / 调用子类方法例2:(重载)设计一个汽车类Multiplication,在其中定义三个同名的mul方法:第一个方法是计算两个整数的积;第二个方法是计算两个浮点数的积;第三个方法是计算三个浮点数的积。程序代码:class Multiplication public void mul(int a, int b) int m = a * b;System.out.println(a + * + b + = + m);public void mul(double a, double b) float m = (float) (a * b);System.out.println(a + * + b + = + m);public void mul(double a, double b, double c) double m = a * b * c;System.out.println(a + * + b + * + c + = + m);public class Prog1 public static void main(String args) Multiplication test = new Multiplication();test.mul(3, 4);test.mul(2.3, 3);test.mul(3, 4, 5);例3:(接口与多态)(1) 定义一个接口CanFly,描述会飞的方法public void fly();(2) 分别定义类飞机和鸟,实现CanFly接口。(3) 定义一个测试类,测试飞机和鸟。测试类中定义一个makeFly()方法,让会飞的事物飞起来。(4) 然后在main方法中创建飞机对象和鸟对象,并在main方法中调用makeFly()方法,让飞机和鸟起飞。程序代码:interface CanFly public void fly();class AirPlane implements CanFly public void fly() System.out.println(airplane is flying);class Bird implements CanFly public void fly() System.out.println(Bird is flying);class Prog1 static void makeFly(CanFly obj) obj.fly();public static void main(String args) AirPlane ap = new AirPlane();Bird b = new Bird();makeFly(ap);makeFly(b);【综合例子】例:在第七章综合例子的基础上,编写一个VIP账号的管理要求:1、VIPAccount继承Account2、VIP设置3个等级:VIP0:一般账户,不能透支VIP1:透支上限3000元VIP2:透支上限10000元1、 根据透支情况,重写withdraw()方法(重写)2、 两个构造函数,一个与父类Account构造函数的参数相同,另外一个参数增加设置对象的VIP等级(重载)实现简单的循环菜单显示,并实现存|取款、修改密码、显示账户余额等功能(实现的功能和第七章的综合例子相同)import java.util.Scanner;class Account int custID;String custName;int custPWD;double custMoney;Account(int id, String name, int PWD, double money) custID = id;custName = name;custPWD = PWD;custMoney = money;void displayAccout() System.out.println(账号: + custID);System.out.println(户名: + custName);System.out.println(余额: + custMoney);boolean deposit(double money)custMoney += money;return true;boolean withdraw(double money)if (custMoneymoney) return false;elsecustMoney -= money;return true;void changePWD(int PWD)custPWD = PWD;class VIPAccount extends Accountint VIPLevel;/VIP特权,透支金额分3个等级为VIP0:一般客户,不能透支,VIP1:3000,VIP2:10000VIPAccount (int id, String name, int PWD, double money) /构造函数重载super(id,name,PWD,money);VIPAccount (int id, String name, int PWD, double money, int level) /构造函数重载super(id,name,PWD,money);VIPLevel = level;void setVIPLevel(int level) VIPLevel = level;boolean withdraw(double money) /函数重写double remain = custMoney - money;switch (VIPLevel)case 0:if (remain 0) System.out.println(您不是VIP客户,不能透支!您目前的余额为: + custMoney);return false; else custMoney -= money;System.out.println(取款成功,您目前的余额为: + custMoney);return true;case 1:if (remain -3000) System.out.println(您的VIP等级为1,透支额度不能抽过3000元,您目前的余额为: + custMoney);return false; else custMoney -= money;System.out.println(取款成功,您目前的余额为: + custMoney);return true;case 2:if (remain -10000) System.out.println(您的VIP等级为2,透支额度不能抽过10000元,您目前的余额为: + custMoney);return false; else custMoney -= money;System.out.println(取款成功,您目前的余额为: + custMoney);return true;return true;public class CustDemo public static void main(String args) VIPAccount cust = new VIPAccount4;cust0 = new VIPAccount(1001, Tom, 111, 400.0f, 0);cust1 = new VIPAccount(1002, Mike, 222, 500.0f, 1);cust2 = new VIPAccount(1003, Bob, 333, 600.0f, 2);cust3 = new VIPAccount(1004, Cindy, 444, 100.0f, 1);int ind = 0;double money;System.out.println(请输入账号:);Scanner sc = new Scanner(System.in);long id = sc.nextLong();for (int i=0; i4; i+)if (custi.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 = new Scanner(System.in);switch(sc.nextInt() case 1:System.out.println(请输入存款金额:);money = sc.nextDouble();custind.deposit(money);custind.displayAccout();break;case 2:System.out.println(请输入取款金额:);money = sc.nextDouble();if (custind.withdraw(money) custind.displayAccout();else System.out.println(您的账号余额不足!);break;case 3:System.out.println(请输入新密码:); custind.custPWD = sc.nextInt();break;case 4:custind.displayAccout(); break;case 5:System.out.println(欢迎使用xxx银行系统!); System.exit(1);【练习题目】8-1 (继承与多态)有哺乳动物类mammal,将其作为父类,从其派生出子类猫cat和子类狗dog,基类中有方法speak()。8-2 (重载)编写一个Java应用程序,从键盘读取用户输入两个字符串,并重载3个strAdd函数分别实现这两个字符串的拼接、整数相加和浮点数相加。要进行异常处理,对输入的不符合要求的字符串提示给用户,不能使程序崩溃。(异常处理)8-3 (接口)1.利用接口继承完成对生物、动物、人三个接口的定义。其中生物接口定义呼吸抽象方法;2.动物接口除具备生物接口特征之外,还定义了吃饭和睡觉两个抽象方法;3.人接口除具备动物接口特征外,还定义了思维和学习两个抽象方法。4.定义一个学生类实现上述人接口。8-4 (继承、接口)实现一个名为Person的类和它的子类Employee,Manager是Employee的子类,设计一个接口Wage,用于涨工资,普通员工一次能涨10,经理能涨20。具体要求如下:(1)接口Wage包含addWage方法,创建类WageImpl用于实现接口Wage(2)Person类中的属
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 重庆石柱土家族自治县2025年上半年事业单位公开遴选试题含答案分析
- 浙江省瑞安市2025年上半年事业单位公开遴选试题含答案分析
- 河北省南皮县2025年上半年事业单位公开遴选试题含答案分析
- 河北省满城县2025年上半年公开招聘城市协管员试题含答案分析
- 河北省涞源县2025年上半年公开招聘村务工作者试题含答案分析
- 河北省景县2025年上半年公开招聘城市协管员试题含答案分析
- 2025版区域代理销售合同示范文本
- 2025布料进出口贸易合作协议书
- 2025保温系统施工与质量保证合同范本
- 2025年资产证券化担保合同范本
- 物业管理权交接方案
- GB/T 17622-2008带电作业用绝缘手套
- 绿色施工及环境保护施工方案
- 外请手术医师知情同意书
- 焊接和切割作业的防火、防爆措施
- 公路工程质量监督综合检查内容
- 人事任命书红头文件模板
- 纽扣参考资料专用英语名词08.4
- 《导游英语》全套课件(完整版)
- SAE_USCAR2_Rev3_2001 汽车电子连接器性能标准
- 钢管技术规格书
评论
0/150
提交评论