1、面向对象Java实验03继承接口和多态电子信息学院实验报告书课程名: 面向对象程序设计(Java) 题 目: 实验03 继承、接口和多态 实验类别: 【验证、设计】 班 级: BX1210 学 号: 121003531028 姓 名: 俞佳星 一、实验目的(1)掌握类的继承机制。(2)熟悉类中成员变量和方法的访问控制。(3)熟悉方法或构造方法多态性。(4)熟悉接口的定义方法。二、实验内容(1)定义一个球类Ball,包含一个私有成员变量半径(double r),两个公有成员方法:设定半径方法(void setR(double x))、得到半径值方法(double getR())。定义一个台球类B
2、illiards,继承Ball类,包含一个私有成员变量颜色(String color),两个公有成员方法:设定颜色方法setColor()、输出信息方法show(),其中show()方法可以输出该台球的颜色和半径值。定义一个公有类TestBall,测试前两个类。(2)定义一个抽象类Driver,它有String gender(性别)和int age(年龄)两个成员属性,还有一个抽象的成员方法drives(Vehicle v),并从它派生出FemaleDriver和MaleDriver两个子类。定义一个抽象类Vehicle,它有String type(车型)和int id(车牌号码)两个成员属性
3、,还有一个抽象的成员方法drivedByDriver(Driver who),并从它派生出Bus和Car两个子类。定义一个测试类TestDemo,在其main()方法中先创建fd和md两个Driver对象,然后创建vb和vc两个Vehicle对象。1 先将以上所有类均放置到cn.edu.sdju.exp031包中,然后以两种方式,分别通过调用drives()和drivedByDriver()成员方法输出如下字符串:A Female drives a CarA Male drives a Bus2 通过将Bus和Car类放置到cn.edu.sdju.exp032包中,检验各个类及其成员的访问权限
4、; 注释掉TestDemo类,在cn.edu.sdju.util包中新建一个LimitRun测试类。在LimitRun类的main()方法中先创建20个Vehicle对象(随机生成车牌号,车牌号范围为11000),并规定只有双号车辆能够通过,输出所有车辆的通过情况。(3)编写程序实现如下功能:已知Person类包含三个公共域变量(姓名、性别、年龄)和一个构造方法,Student类是Person类的派生类,包含两个新的公共域变量(学号、班号)、两个公共方法(修改年龄、显示基本信息)及一个构造方法。定义一组学生对象,并初始化他们的基本信息,然后依次输出。(4)接口实验程序文件TestInterfa
5、ce.java。运行该程序,然后按【思考问题】内容修改和观察程序。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
6、 TestInterface 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中定义的两个方法前加上abs
7、tract修饰符再编译,看对程序有影响否?为什么?不用单独的实现类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.printl
8、n(球半径:+a.getR(); billiards b=new billiards(3,red); b.setColor(bule); b.setR(2); b.show(); class ball private 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 ball private String color; billiards() super(); color=write; billi
9、ards(double r,String color) super(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(femal
10、e,20); driver md=new maleDriver(male,20); vehicle vb=new bus(bus,239); vehicle vc=new car(car,234); fd.drives(vc); vb.dirvedByDriver(md); abstract class driver String gender; int age; public driver(String gender, int age) this.gender = gender; this.age = age; abstract void drives(vehicle v);abstract
11、 class vehicle String type; int id; public vehicle(String type, int id) this.type = type; this.id = id; abstract void dirvedByDriver(driver who);class femaleDriver extends driver public femaleDriver(String gender, int age) super(gender, age); void drives(vehicle v) System.out.println(A + gender + dr
12、ives a + v.type ); class maleDriver extends driver public maleDriver(String gender, int age) super(gender, age); void drives(vehicle v) System.out.println(A + gender + drives a + v.type); class bus extends vehicle public bus(String type, int id) super(type, id); void dirvedByDriver(driver who) Syste
13、m.out.println(A + who.gender + drives a + type); class car extends vehicle public 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 publ
14、ic static void main(String args) vehicle ve=new vehicle20; for(int i=0;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
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1