面向对象(Java)实验03、继承、接口和多态.doc

上传人:豆**** 文档编号:29401160 上传时间:2022-07-30 格式:DOC 页数:15 大小:913KB
返回 下载 相关 举报
面向对象(Java)实验03、继承、接口和多态.doc_第1页
第1页 / 共15页
面向对象(Java)实验03、继承、接口和多态.doc_第2页
第2页 / 共15页
点击查看更多>>
资源描述

《面向对象(Java)实验03、继承、接口和多态.doc》由会员分享,可在线阅读,更多相关《面向对象(Java)实验03、继承、接口和多态.doc(15页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-date面向对象(Java)实验03、继承、接口和多态面向对象(Java)实验03、继承、接口和多态电子信息学院实验报告书课程名: 面向对象程序设计(Java) 题 目: 实验03 继承、接口和多态 实验类别: 【验证、设计】 班 级: BX1210 学 号: 121003531028 姓 名: 俞佳星 评语:实验态度:认真( ) 一般( ) 较差( )实验结果:正确( )

2、部分正确( ) 错( )实验理论:掌握( ) 熟悉( ) 了解( ) 生疏( )操作技能:较强( ) 一般( ) 较差( )实验报告:较好( ) 一般( ) 较差( )成绩: 指导教师: 王中华 批阅时间: 2014年3月25日-一、实验目的(1)掌握类的继承机制。(2)熟悉类中成员变量和方法的访问控制。(3)熟悉方法或构造方法多态性。(4)熟悉接口的定义方法。二、实验内容(1)定义一个球类Ball,包含一个私有成员变量半径(double r),两个公有成员方法:设定半径方法(void setR(double x))、得到半径值方法(double getR())。定义一个台球类Billiard

3、s,继承Ball类,包含一个私有成员变量颜色(String color),两个公有成员方法:设定颜色方法setColor()、输出信息方法show(),其中show()方法可以输出该台球的颜色和半径值。定义一个公有类TestBall,测试前两个类。(2)定义一个抽象类Driver,它有String gender(性别)和int age(年龄)两个成员属性,还有一个抽象的成员方法drives(Vehicle v),并从它派生出FemaleDriver和MaleDriver两个子类。定义一个抽象类Vehicle,它有String type(车型)和int id(车牌号码)两个成员属性,还有一个抽象

4、的成员方法drivedByDriver(Driver who),并从它派生出Bus和Car两个子类。定义一个测试类TestDemo,在其main()方法中先创建fd和md两个Driver对象,然后创建vb和vc两个Vehicle对象。 先将以上所有类均放置到cn.edu.sdju.exp031包中,然后以两种方式,分别通过调用drives()和drivedByDriver()成员方法输出如下字符串:A Female drives a CarA Male drives a Bus 通过将Bus和Car类放置到cn.edu.sdju.exp032包中,检验各个类及其成员的访问权限; 注释掉Test

5、Demo类,在cn.edu.sdju.util包中新建一个LimitRun测试类。在LimitRun类的main()方法中先创建20个Vehicle对象(随机生成车牌号,车牌号范围为11000),并规定只有双号车辆能够通过,输出所有车辆的通过情况。(3)编写程序实现如下功能:已知Person类包含三个公共域变量(姓名、性别、年龄)和一个构造方法,Student类是Person类的派生类,包含两个新的公共域变量(学号、班号)、两个公共方法(修改年龄、显示基本信息)及一个构造方法。定义一组学生对象,并初始化他们的基本信息,然后依次输出。(4)接口实验程序文件TestInterface.java。运

6、行该程序,然后按【思考问题】内容修改和观察程序。interface rec_Area_Peri int getArea(); int getPerimeter();class rectangle implements rec_Area_Peri int width, length; rectangle(int w, int l) width=w; length=l; public int getArea() return width*length; public int getPerimeter() return (2*(width+length); public class TestInte

7、rface public static void main(String args) rectangle rect=new rectangle(10,20); System.out.println(矩形面积=+rect.getArea(); System.out.println(矩形周长=+rect.getPerimeter(); 【思考问题】在实现类rectangle中注释掉一个方法后进行编译,看发生了什么?为什么?在实现类rectangle中将各实现方法前的public修饰符去掉再进行编译,看发生了什么?为什么?将接口rec_Area_Peri中定义的两个方法前加上abstract修饰符再

8、编译,看对程序有影响否?为什么?不用单独的实现类rectangle,直接在主类classe TestInterface中实现那两个方法,如何修改程序?将接口rec_Area_Peri中定义的两个方法拆分定义成两个接口,即每个接口只定义一个方法,程序将如何修改?三、实验结果(关键代码和运行结果)(1)package cn.edu.sdju.no28.johnson;public class testBall public static void main(String args)ball a =new ball(2);a.setR(3);System.out.println(球半径:+a.get

9、R();billiards b=new billiards(3,red);b.setColor(bule);b.setR(2);b.show();class ballprivate double r;ball()r=0;ball(double r)this.r=r;void setR(double r)this.r=r;double getR()return r;class billiards extends ballprivate String color;billiards()super();color=write;billiards(double r,String color)super

10、(r);this.color=color;void setColor(String color)this.color=color;void show()System.out.println(台球颜色;+color+n台球半径:+super.getR();(1)运行结果(2)package cn.edu.sdju.no28.johnson;public class testDemo public static void main(String args)driver fd=new femaleDriver(female,20);driver md=new maleDriver(male,20);

11、vehicle vb=new bus(bus,239);vehicle vc=new car(car,234);fd.drives(vc);vb.dirvedByDriver(md);abstract class driverString gender;int age;public driver(String gender, int age) this.gender = gender;this.age = age;abstract void drives(vehicle v);abstract class vehicleString type;int id;public vehicle(Str

12、ing type, int id) this.type = type;this.id = id;abstract void dirvedByDriver(driver who);class femaleDriver extends driverpublic femaleDriver(String gender, int age) super(gender, age);void drives(vehicle v) System.out.println(A + gender + drives a + v.type );class maleDriver extends driverpublic ma

13、leDriver(String gender, int age) super(gender, age);void drives(vehicle v) System.out.println(A + gender + drives a + v.type);class bus extends vehiclepublic bus(String type, int id) super(type, id);void dirvedByDriver(driver who) System.out.println(A + who.gender + drives a + type);class car extend

14、s vehiclepublic car(String type, int id) super(type, id);void dirvedByDriver(driver who) System.out.println(A + who.gender + drives a + type);(2)运行结果package cn.edu.sdju.no28.johnson;import java.util.Random;public class limitRun public static void main(String args)vehicle ve=new vehicle20;for(int i=0

15、;i20;i+)Random rad=new Random();vei=new car(car,rad.nextInt(10000);for(int i=0;i20;i+)if(vei.id % 2 = 0) System.out.println(车牌为:+vei.id +可以通过);else System.out.println(车牌为:+ vei.id+不可以通过);(2)运行结果(3)package cn.edu.sdju.no28.johnson;public class testStu public static void main(String args)student stu=n

16、ew student3;stu0=new student(Tom,male,19,001,class one);stu1=new student(Jack,male,20,002,class two);stu2=new student(Ada,female,19,002,class one);for(int i=0;i3;i+)stui.show();class personString name;String sex;int age;person()name=unknown;sex=unknown;age=0;person(String name, String sex, int age)

17、this.name = name;this.sex = sex;this.age = age;String getName() return name;void setName(String name) this.name = name;String getSex() return sex;void setSex(String sex) this.sex = sex;int getAge() return age;void setAge(int age) this.age = age;class student extends personString sNo;String cNo;stude

18、nt()super();sNo=unknown;cNo=unknown;student(String name, String sex, int age,String sNo, String cNo) super(name,sex,age);this.sNo = sNo;this.cNo = cNo;String getsNo() return sNo;void setsNo(String sNo) this.sNo = sNo;String getcNo() return cNo;void setcNo(String cNo) this.cNo = cNo;void show()System

19、.out.println(学生: + name + 的信息:n性别: + sex + 年龄:+age + 学号: + sNo + 班号:+cNo);(3)运行结果(4)package cn.edu.sdju.no28.johnson;public class testInterface public static void main(String args) rectangle rect = new rectangle(10, 20);System.out.println(矩形面积= + rect.getArea();System.out.println(矩形周长= + rect.getPer

20、imeter();interface rec_Area_Peri int getArea();int getPerimeter();class rectangle implements rec_Area_Peri int width, length;rectangle(int w, int l) width = w;length = l;public int getArea() return width * length;public int getPerimeter() return (2 * (width + length);(4)运行结果四、实验体会在这次试验中我掌握类的继承机制。了解JAVA中继承的重要性。继承是JAVA中非常常用也是非常有用的一个机制。通过它可以实现以后的多态等更加复杂的机制。我也熟悉类中成员变量和方法的访问控制。在JAVA中,成员变量通常是私有的不能随意改变的,要改变他,通常要调用相应的set方法。通过不同的访问控制符,我们可以实现不同的访问控制。在这次试验我同时熟悉了方法或构造方法多态性。多态也是JAVA中非常重要的一种机制。通过多态性,我们可以很方便的把多种不同类型的变量以同一种形式来访问。它极大地提高了编程的效率。同时我还熟悉了接口的定义方法。

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

当前位置:首页 > 教育专区 > 小学资料

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

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