面向对象Java实验03继承接口和多态Word格式.docx

上传人:b****5 文档编号:16144123 上传时间:2022-11-20 格式:DOCX 页数:13 大小:158.79KB
下载 相关 举报
面向对象Java实验03继承接口和多态Word格式.docx_第1页
第1页 / 共13页
面向对象Java实验03继承接口和多态Word格式.docx_第2页
第2页 / 共13页
面向对象Java实验03继承接口和多态Word格式.docx_第3页
第3页 / 共13页
面向对象Java实验03继承接口和多态Word格式.docx_第4页
第4页 / 共13页
面向对象Java实验03继承接口和多态Word格式.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

面向对象Java实验03继承接口和多态Word格式.docx

《面向对象Java实验03继承接口和多态Word格式.docx》由会员分享,可在线阅读,更多相关《面向对象Java实验03继承接口和多态Word格式.docx(13页珍藏版)》请在冰豆网上搜索。

面向对象Java实验03继承接口和多态Word格式.docx

(2)熟悉类中成员变量和方法的访问控制。

(3)熟悉方法或构造方法多态性。

(4)熟悉接口的定义方法。

二、实验内容

(1)定义一个球类Ball,包含一个私有成员变量——半径(doubler),两个公有成员方法:

设定半径方法(voidsetR(doublex))、得到半径值方法(doublegetR())。

定义一个台球类Billiards,继承Ball类,包含一个私有成员变量——颜色(Stringcolor),两个公有成员方法:

设定颜色方法setColor()、输出信息方法show(),其中show()方法可以输出该台球的颜色和半径值。

定义一个公有类TestBall,测试前两个类。

(2)定义一个抽象类Driver,它有Stringgender(性别)和intage(年龄)两个成员属性,还有一个抽象的成员方法drives(Vehiclev),并从它派生出FemaleDriver和MaleDriver两个子类。

定义一个抽象类Vehicle,它有Stringtype(车型)和intid(车牌号码)两个成员属性,还有一个抽象的成员方法drivedByDriver(Driverwho),并从它派生出Bus和Car两个子类。

定义一个测试类TestDemo,在其main()方法中先创建fd和md两个Driver对象,然后创建vb和vc两个Vehicle对象。

1先将以上所有类均放置到cn.edu.sdju.exp031包中,然后以两种方式,分别通过调用drives()和drivedByDriver()成员方法输出如下字符串:

AFemaledrivesaCar

AMaledrivesaBus

2通过将Bus和Car类放置到cn.edu.sdju.exp032包中,检验各个类及其成员的访问权限;

③注释掉TestDemo类,在cn.edu.sdju.util包中新建一个LimitRun测试类。

在LimitRun类的main()方法中先创建20个Vehicle对象(随机生成车牌号,车牌号范围为1~1000),并规定只有双号车辆能够通过,输出所有车辆的通过情况。

(3)编写程序实现如下功能:

已知Person类包含三个公共域变量(姓名、性别、年龄)和一个构造方法,Student类是Person类的派生类,包含两个新的公共域变量(学号、班号)、两个公共方法(修改年龄、显示基本信息)及一个构造方法。

定义一组学生对象,并初始化他们的基本信息,然后依次输出。

(4)接口实验

程序文件TestInterface.java。

运行该程序,然后按【思考问题】内容修改和观察程序。

interfacerec_Area_Peri

{intgetArea();

intgetPerimeter();

}

classrectangleimplementsrec_Area_Peri

{intwidth,length;

rectangle(intw,intl)

{width=w;

length=l;

}

publicintgetArea()

{returnwidth*length;

}

publicintgetPerimeter()

{return(2*(width+length));

publicclassTestInterface

{publicstaticvoidmain(Stringargs[])

{rectanglerect=newrectangle(10,20);

System.out.println("

矩形面积="

+rect.getArea());

矩形周长="

+rect.getPerimeter());

【思考问题】

在实现类rectangle中注释掉一个方法后进行编译,看发生了什么?

为什么?

在实现类rectangle中将各实现方法前的public修饰符去掉再进行编译,看发生了什么?

将接口rec_Area_Peri中定义的两个方法前加上abstract修饰符再编译,看对程序有影响否?

不用单独的实现类rectangle,直接在主类classeTestInterface中实现那两个方法,如何修改程序?

将接口rec_Area_Peri中定义的两个方法拆分定义成两个接口,即每个接口只定义一个方法,程序将如何修改?

三、实验结果(关键代码和运行结果)

(1)

packagecn.edu.sdju.no28.johnson;

publicclasstestBall{

publicstaticvoidmain(Stringargs[]){

balla=newball

(2);

a.setR(3);

System.out.println("

球半径:

"

+a.getR());

billiardsb=newbilliards(3,"

red"

);

b.setColor("

bule"

b.setR

(2);

b.show();

classball{

privatedoubler;

ball(){

r=0;

ball(doubler){

this.r=r;

voidsetR(doubler){

doublegetR(){

returnr;

classbilliardsextendsball{

privateStringcolor;

billiards(){

super();

color="

write"

;

billiards(doubler,Stringcolor){

super(r);

this.color=color;

voidsetColor(Stringcolor){

voidshow(){

台球颜色;

+color+"

\n台球半径:

+super.getR());

(1)运行结果

(2)

publicclasstestDemo{

driverfd=newfemaleDriver("

female"

20);

drivermd=newmaleDriver("

male"

vehiclevb=newbus("

bus"

239);

vehiclevc=newcar("

car"

234);

fd.drives(vc);

vb.dirvedByDriver(md);

abstractclassdriver{

Stringgender;

intage;

publicdriver(Stringgender,intage){

this.gender=gender;

this.age=age;

abstractvoiddrives(vehiclev);

abstractclassvehicle{

Stringtype;

intid;

publicvehicle(Stringtype,intid){

this.type=type;

this.id=id;

abstractvoiddirvedByDriver(driverwho);

classfemaleDriverextendsdriver{

publicfemaleDriver(Stringgender,intage){

super(gender,age);

voiddrives(vehiclev){

A"

+gender+"

drivesa"

+v.type);

classmaleDriverextendsdriver{

publicmaleDriver(Stringgender,intage){

+v.type);

classbusextendsvehicle{

publicbus(Stringtype,intid){

super(type,id);

voiddirvedByDriver(driverwho){

+who.gender+"

+type);

classcarextendsvehicle{

publiccar(Stringtype,intid){

(2)运行结果

importjava.util.Random;

publicclasslimitRun{

vehicle[]ve=newvehicle[20];

for(inti=0;

i<

20;

i++){

Randomrad=newRandom();

ve[i]=newcar("

rad.nextInt(10000));

}

if(ve[i].id%2==0)

System.out.println("

车牌为:

+ve[i].id+"

可以通过"

else

+ve[i].id+"

不可以通过"

(3)

publicclasstestStu{

publicstaticvoidmain(String

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1