java实验文档3

上传人:油条 文档编号:12489655 上传时间:2017-09-03 格式:PDF 页数:15 大小:221.81KB
返回 下载 相关 举报
java实验文档3_第1页
第1页 / 共15页
java实验文档3_第2页
第2页 / 共15页
java实验文档3_第3页
第3页 / 共15页
java实验文档3_第4页
第4页 / 共15页
java实验文档3_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《java实验文档3》由会员分享,可在线阅读,更多相关《java实验文档3(15页珍藏版)》请在金锄头文库上搜索。

1、第3天J a v a实验参考实验抽象类和抽象方法的定义目标掌握抽象类和抽象方法的定义源文件:S h a pes .j a vapublicabstractclassShapesprivateStringcolor;/*得出周长*/publicabstractdoubleperimeter();/*得到形状*/publicabstractStringgetType();/用于设置/获取“颜色”属性的方法publicStringgetColor()returncolor;publicvoidsetColor(StringtheColor)color=theColor;首先我们定义了一个用来表示各种

2、图形的类S hapes,这个类有两个抽象方法,一个用于返回图形的形状,一个用于返回图形的周长。注意,这是一个抽象类,不能直接实例化它。源文件:S h a peT r i a ngle .j a vapublicclassShapeTriangleextendsShapesprotecteddoublea,b,c;publicShapeTriangle()setSides(0.0,0.0,0.0);publicShapeTriangle(doublei,doublej,doubleh)setSides(i,j,h);publicvoidsetSides(doublex,doubley,doubl

3、ez)this.a=x;this.b=y;this.c=z;/*实现父类中的抽象方法*/publicdoubleperimeter()returna+b+c;publicStringgetType()return三角形;publicstaticvoidmain(Stringargs)ShapeTrianglest=newShapeTriangle(3.0,4.0,5.0);System.out.println(形状:+st.getType();System.out.println(周长:+st.perimeter();这是一个表示三角形的类,这个类继承了父类S hapes,然后,在父类的基础上

4、新增了一些属性以及相应的方法。根据三角形的实际情况,实现了父类中的两个抽象方法:get T ype( )返回一个“三角形”的字符串,而且根据三角形周长的算法实现了父类中的计算周长的方法:per i m e t e r ( )。源文件:S h a peC i r c l e .j a vapublicclassShapeCircleextendsShapesprivatedoubler;publicShapeCircle()setRadius(0.0);publicShapeCircle(doublera)setRadius(ra);publicvoidsetRadius(doublerad)t

5、his.r=rad;/*实现父类的抽象方法*/publicdoubleperimeter()return2.0*Math.PI*r;publicStringgetType()return圆;publicstaticvoidmain(Stringargs)ShapeCirclesc=newShapeCircle(5);System.out.println(形状:+sc.getType();System.out.println(周长:+sc.perimeter();在这个类S hapeC i r c l e中,也继承了类S hapes,但它对抽象方法per i m e t e r ( )的实现方式

6、是和S hapeT r i a ngle不一样的。实验设计设计模式(补充)目标掌握用a bs t r a c t来实现模板设计模式源文件:C ont a i ner .j a vapublicabstractclassContainerdoubleheight;/计算面积的抽象方法,不同形状的容器,面积计算方式不一样,/因此将其实现放到子类中去实现publicabstractdoublegetArea();publicvoidsetHeight(doubleheight)this.height=height;publicdoublegetHeight()returnthis.height;pu

7、blicdoublegetVolumn()/体积的计算公式,为底面积乘以高doublevol=getHeight()*getArea();returnvol;给所有类型的账户定义一个超类C onta i ner . j a va,在这个父类中,有一个用于计算利息的方法get V ol um n ( ),已经将它的算法写好了,这个方法返回一个“底面积高”的值。但是,因为其中的“底面积”的计算方法根据容器类型的不同而不同,所以没有具体的实现获得面积的方法,所以,将这个获得面积的方法放到子类中去实现,根据不同的子类,设计出不同的获得底面积的方法。下面是继承了这个抽象类的一个子类:源文件:C u be

8、.j a va/*TemplateMethod演示*/立方体classCubeextendsContainerprivatedoublewidth,length;publicCube(doublewidth,doublelength)this.width=width;this.length=length;publicvoidsetWidth(doublewidth)this.width=width;publicdoublegetWidth()returnwidth;publicvoidsetLength(doublelength)this.length=length;publicdoubleg

9、etLength()returnlength;/只需要实现父类中没有实现的用于获取面积的抽象方法publicdoublegetArea()returngetWidth()*getLength();在这个子类中,加上了立方体的一些属性:底的长和宽,而其面积根据其长宽即可得。可以使用以下的方式来使用这个类:源文件:T e s t C ont a i ne r .j a va/*TemplateMethod演示*/publicclassTestContainerpublicstaticvoidprintVolumn(Containerc)System.out.println(体积:+c.getVol

10、umn();publicstaticvoidmain(Stringargs)Containercontainer=newCube(23.0,23.4);container.setHeight(10.3);printVolumn(container);实验接口的定义目标掌握接口的定义方法源文件:V i de oDe vic e .j a vapublicinterfaceVideoDeviceintMIN_BRIGHTNESS=10;voidturnOn();voidturnOff();在这个用于表示可视设备的接口中,定义了一个接口属性:MI N _BR I G H T N E S S,用来表示

11、最小亮度;定义了两个方法:用于表示开机的t r ur nOn()和用于表示关机的t ur nOf f ( )。接口的属性将会被自动加上publi c s t a t i c f i nal修饰。我们写一个应用程序来验证它:源文件:T e s t V i deoDe vic e .j a vapublicclassTestVideoDevicepublicstaticvoidmain(Stringargs)System.out.println(VideoDevice.MIN_BRIGHTNESS);在这个类的m a i n( )方法中,直接使用“接口.属性名称”来访问接口的方法,我们将它编译并运

12、行,将向控制台打印出如下的信息:10它就是接口中我们定义的属性“MI N _BR I G H T N E S S”的值。从中也可以看出,接口的属性确实已经被加上了“publi c s t a t i c”关键字。那么,如何验证它还被自动加上了“f i nal”关键字呢?很简单,只需要在T e s t Vi deoDe vi c e的m a i n( )方法中写一条语句,试图修改MI N _BR I G H T N E S S的值,看看会发生什么结果就可以了:VideoDevice.MIN_BRGHTNESS=100;重新编译这个程序,将会出现如下的错误:T e s t Vi deoDe vi

13、c e . j a va: 5: c a nnota s s i gn a val ue t o f i nal var i a bl e MI N _BR I G H T N E S SV i deoDe vi c e . MI N _ BR I G H T N E S S = 100;1 e r r or很显然,属性MI N _BR I G H T N E S S确实已经被加上了“f i nal”修饰符。实验类中实现接口目标掌握实现接口的方法源文件:C om m T ools .j a va/交流工具接口interfaceCommToolspublicvoidcomm();在这里定义了一个

14、“交流工具”的接口:C om m T ools,在这个接口中,有一个方法:c om m ( ),用来表示沟通交流操作。源文件:Me dia P l a yer .j a va/播放器接口interfaceMediaPlayerpublicvoidplay();这里定义的是一个“媒体播放器”的接口,这个接口只声明了一个方法:pla y( ),用来表示播放多媒体操作。源文件:S m a r t P h one.j a va/智能手机类定义publicclassSmartPhoneimplementsCommTools,MediaPlayer/从CommTools中继承publicvoidcomm(

15、)System.out.println(“打电话);/从Metal中继承publicvoidplay()System.out.println(“听歌曲);然后我们定义了一个“S m a r t P hone”类用来表示智能手机这个实体。智能手机同时具有“沟通工具”和“多媒体播放器”的特点,在这边我们同时实现了“C om m T ools”和“Me di a P l a yer”这两个接口,然后,在这个类中将两个接口中的方法实现。这样,就实现了“多继承”的功能。实验接口的继承目标掌握接口的继承方法源文件:A udioDe vic e .j a vapublicinterfaceAudioDevi

16、ceintMIN_VOLUME=5;voidturnOn();voidturnOff();voidtuneVolume(intvolume);这里我们定义了一个接口AudioDe vi c e,它有三个方法:用于开、关的t ur nOn( )、t ur nOf f ( )以及用于调整音量的t uneV ol um e ( )。然后,我们来定一个接口“AV D e vic e”,让它同时继承接口“V i deoDe vi c e”和“A udioDe vi c e”:源文件:AV D e vic e .j a vapublicinterfaceAVDeviceextendsVideoDevice,AudioDevicevoidshiftChannel();除了从“A u

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

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号