级java语言实验3指导面向对象程序设计继承封装多态Word格式文档下载.docx

上传人:b****6 文档编号:20507512 上传时间:2023-01-23 格式:DOCX 页数:17 大小:34.21KB
下载 相关 举报
级java语言实验3指导面向对象程序设计继承封装多态Word格式文档下载.docx_第1页
第1页 / 共17页
级java语言实验3指导面向对象程序设计继承封装多态Word格式文档下载.docx_第2页
第2页 / 共17页
级java语言实验3指导面向对象程序设计继承封装多态Word格式文档下载.docx_第3页
第3页 / 共17页
级java语言实验3指导面向对象程序设计继承封装多态Word格式文档下载.docx_第4页
第4页 / 共17页
级java语言实验3指导面向对象程序设计继承封装多态Word格式文档下载.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

级java语言实验3指导面向对象程序设计继承封装多态Word格式文档下载.docx

《级java语言实验3指导面向对象程序设计继承封装多态Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《级java语言实验3指导面向对象程序设计继承封装多态Word格式文档下载.docx(17页珍藏版)》请在冰豆网上搜索。

级java语言实验3指导面向对象程序设计继承封装多态Word格式文档下载.docx

(2)、类体

类体定义如下

classclassName

{

[public|protected|private][static][final][transient][volatile]

TypevariableName;

//成员变量

[public|protected|private][static][final][abstract][native][synchronized]

returnTypemethondName([paramList])[throwsexceptionList]

{statements}//成员方法

}

 

(3)、成员变量

成员变量的声明方式如下

其中:

[public|protected|private]→可见性

[static]→静态变量(类变量),相当于实例变量

[final]→常量

[transient]→暂时性变量,用于对象存档

[volatile]→变量,用于共发线程的共享

(4)、成员方法

returnTypemethondName([paramList])[throwsexceptionList]//方法体的声明

{statements}//方法体

[public|protected|private]→可见性

[static]→静态方法,也叫类方法,可以通过类名直接调用

[final]→方法不能被重写

[abstract]→抽象方法,没有方法体(体现多态时常用)

[native]→集成其他语言的代码

[synchronized]→控制多个并发线程的访问

例子3-1请根据注释填写语句,并上机调试成功

根据注释添加语句,并调试和修改程序,使其能够执行。

---------------------------------------------------------------------------------------------------------------------

classRetangle{

publicRetangle(doublel,doublew)

{length=l;

width=w;

publicdoublecalcPerimeter()//返回周长

{

(1)}

publicdoublecalcArea()//返回面积

{

(2)}

publicvoidShow()//显示矩形的长和宽

{(3)}

protecteddoublelength;

protecteddoublewidth;

classSquareextendsRetangle{

publicSquare(doubleside)//调用父类的构造方法

{(4)}

publicdoublecalcPerimeter()

{returnwidth*4;

}

publicvoidShow(){

System.out.println(“边长为”+width+“的正方形”);

publicclassTest{

publicstaticvoidmain(Stringargs[]){

Squaresq1=newSquare(2.0);

sq1.Show();

System.out.println("

正方形的边长为"

+sq1.calcPerimeter());

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

(2)returnwidth*length;

(3)System.out.print("

length="

+length+"

\n"

+"

width="

+width;

(4)super(side,side);

-----------------------------------------------------------------------------------------------------------------

填写的语句是:

{return(width+length)*2;

{returnwidth*length;

{System.out.print("

+width);

{super(side,side);

{returnwidth*4;

System.out.println("

边长为"

+width+"

的正方形"

);

正方形的周长为"

2)类的继承

继承是面向对象程序设计的方法中的一种重要手段,通过继承可以更有效的组织程序的结构,明确类之间的关系。

继承通过extends关键字来实现,子类继承父类的属性和行为,同时可以修改父类的属性和行为,并添加新的属性和行为。

Java不支持多重继承。

创建子类的格式如下

classSubClassextendsSuperClass{

……

其中SubClass→子类的名称

extends→继承的关键字

SuperClass→父类的名字

例子3-2请分析程序,填写语句的功能注释,并上机调试成功。

下面这个例子通过点、圆的层次结构,介绍类的继承。

----------------------------------------------------------------------------

importjava.text.DecimalFormat;

//调用格式化数字输出

importjavax.swing.JOptionPane;

//joptionpane让您轻松弹出一个标准的对话框

classPoint{//父类点的的定义

protectedintx,y;

//定义点的坐标

publicPoint(){//确定构造函数

setPoint(0,0);

publicPoint(inta,intb){//构造函数重载带参数的构造函数

setPoint(a,b);

}publicvoidsetPoint(inta,intb){//(

1)

x=a;

y=b;

publicintgetX(){returnx;

}//获得X的坐标

publicintgetY(){returny;

}//获得Y的坐标

publicStringtoString(){

return"

["

+x+"

"

y"

]"

;

}

/*子类圆的定义*/

classCircleextendsPoint{//圆类继承父类点类

protecteddoubleradius;

//定义圆的半径

publicCircle(){setRadius(0);

}//定义子类的构造函数,隐含调用了父类的构造函数

publicCircle(doubler,inta,intb){

super(a,b);

//

(2)

setRadius(r);

}

publicvoidsetRadius(doubler){

radius=(r>

=0.0?

r:

0.0);

//(3)

}

publicdoublegetRadius(){//获得圆半径

returnradius;

publicdoublearea(){//(4)

returnMath.PI*radius*radius;

publicStringtoString(){//圆的半径。

以及圆心坐标转换成字符串输出

return"

Center="

+y+"

Radius="

+radius;

}

publicclassInheritanceTest{

PointpointRef,p;

//声明两点对象

CirclecircleRef,c;

//声明两圆对象

Stringoutput;

//定义一个字符串变量

p=newPoint(30,50);

//给点对象赋值

c=newCircle(2.7,120,89);

//给圆对象赋值

//把点对象和圆对象转换成字符串后给字符串output赋值

output="

Pointp:

"

+p.toString()+"

\nCirclec:

+c.toString();

pointRef=c;

output=output+"

\n\nCirclec(viapoineRef):

+pointRef.toString();

circleRef=(Circle)pointRef;

output=output+"

+circleRef.toString();

DecimalFormatprecision2=newDecimalFormat("

0.00"

output+="

\nAreaofc(viacircleRef):

+precision2.format(circleRef.area());

//将圆定义成点对象输出

if(pinstanceofCircle){//(5)

circleRef=(Circle)p;

output+="

\n\ncastsuccessful"

}elseoutput+="

\n\npdosenotrefertoaCircle"

//利用对话框输出相关信息

JOptionPane.showMessageDialog(null,output,

InheritanceTset"

JOptionPane.INFORMATION_MESSAGE);

//退出

System.exit(0);

语句的功能注释:

(1)方法成员,设置变量x、y

(2)调用父类的构造函数

(3)设置半径

(4)求取面积

2.接口的定义与应用

接口声明的形式如下所示:

interface接口名字

{……//常量定义和方法定义

接口使用的关键字是implements,形式如下所示:

classAimplementsPrintable,Addable

其中类A中使用接口Printable和Addable

接口的特点:

1.类体中必须实现接口中定义的所有方法;

2.接口中的方法和常量必须是public的。

3.实现方法时,方法头必须一致(返回值类型,名字,参数);

4.父类被继承时,接口同时被继承;

5.接口也可被继承,关键字为extends;

6.接口一般表示功能,而类一般表示属性。

例子3-3本实例实现了一个字符栈。

程序思路是:

首先定义一个字符栈的接口CharStackInterface,定义了栈的空间容量,规定栈所包含的方法,然后定义栈类CharStack,该类实现了字符栈的接口,最后编写测试类StackDemo进行测试。

请根据编程思路实现字符栈的接口CharStackInterface,并调试程序正确运行,写出程序执行结果。

------------------------------------------------------------------------------------------------------------------------------

interfaceCharStackinterface{

//需要实现的字符栈接口

classCharStackimplementsCharStackinterface{

chardata[];

inttop;

CharStack(){

data=newchar[maxsize];

publicvoidinitStack(){

top=-1;

publicbooleanpush(charx){

if(!

full()){

data[++top]=x;

returntrue;

else{

returnfalse;

publiccharpop(){

empty()){

top--;

returndata[top+1];

return'

\0'

publicbooleanempty(){

returntop==-1;

publicbooleanfull(){

returntop==maxsize-1;

}

publicclassStcckDemo{

CharStacks=newCharStack();

s.initStack();

s.push('

A'

B'

System.out.println(s.pop());

字符栈的接口CharStackInterface:

程序的执行结果:

四、上机实践

1.编写程序:

在圆类的基础上派生出了圆锥类,按照注释填空,并调试执行成功,写出程序的执行结果。

classCircle

{doubler;

Circle(){

(1)}//无参构造方法,默认半径为1.0

Circle(doublea)//有参构造方法

{

(2)}

doubleArea(){(3)}//返回面积

doubleGirth(){(4)}//返回周长

classConeextendsCircle{

doubleh;

Cone()

{super();

h=1.0;

Cone(doublerr,doublehh){

(5)//为半径和高赋值

doubleV(){(6)}//返回圆锥的体积

publicclassConeTest{

publicstaticvoidmain(Stringargs[])

{Conec1=newCone();

System.out.println(c1.V());

Conec2=newCone(1.0,3.0);

System.out.println(c2.V());

------------------------------------------------------------------------------

按照注释的填空:

(1)r=1.0

(2)this.a=a;

(3)returnArea

(4)returnGirth

(5)rr=r;

hh=h;

(6)returnV

2.下面程序实现了抽象类的继承和接口的实现,同时还体现了接口的回调和向上转型,请调试该程序,根据注释填空,并写出程序执行结果。

-----------------------------------------------------------------------------

abstractclassPerson{

publicabstractvoidEat();

publicabstractvoidSleep();

interfaceFather{

publicvoidSmoking();

publicvoidGoFishing();

interfaceMon{

publicvoidWatchTV();

publicvoidCook();

classMe{//

(1)继承Person类,实现Father和Mon接口

publicvoidEat(){

System.out.println("

我喜欢吃鱼香茄子"

}

publicvoidSleep(){

我喜欢睡觉时做梦"

publicvoidSmoking(){

我不喜欢抽烟"

publicvoidGoFishing(){

我喜欢钓鱼"

publicvoidWatchTV(){

我喜欢看电视"

publicvoidCook(){

我不太会做菜"

}}

publicclassTest3{publicstaticvoidmain(String[]args){

Personp1=newMe();

p1.Eat();

//

(2)调用p1的Sleep()方法

Monm1=(Mon)p1;

//(3)调用m1的WatchTV()方法

m1.Cook();

----------------------------------------------------------------------------------------------------------------------

根据注释填空:

程序执行结果:

3.将程序上机调试成功,并写出程序执行结果。

importjava.util.*;

interfaceInstrument5{

inti=5;

voidplay();

Stringwhat();

voidadjust();

classWind5implementsInstrument5{

publicvoidplay(){

Wind5.play()"

publicStringwhat(){return"

Wind5"

publicvoidadjust(){}

classPercussion5implementsInstrument5{

publicvoidpl

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

当前位置:首页 > 工程科技 > 机械仪表

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

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