实现抽象图形接口与包_第1页
实现抽象图形接口与包_第2页
实现抽象图形接口与包_第3页
实现抽象图形接口与包_第4页
实现抽象图形接口与包_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实现抽象图形接口与包第一页,共二十四页,编辑于2023年,星期二内容介绍9.1任务预览9.2抽象方法与抽象类9.3接口类型9.4接口多重继承与实现9.5包9.6本章小结9.7实训9:实现图形接口第二页,共二十四页,编辑于2023年,星期二9.1任务预览本章实训程序运行结果:

第三页,共二十四页,编辑于2023年,星期二

9.2抽象方法与抽象类

9.2.1抽象方法与抽象类在类中声明抽象方法的语法形式:可选public等abstract返回类型方法名(可选参数表);声明了抽象方法的类,由于有不能执行的方法,因此无法实例化,即无法构建对象,是抽象类。抽象类也用关键字abstract声明:可选publicabstractclass类名{类成员}注意:含有抽象方法的类一定是抽象类,但抽象类不一定含有抽象方法。第四页,共二十四页,编辑于2023年,星期二【例9-1】定义抽象图形类,内含抽象的面积和周长方法。定义继承该类的圆类,重写并实现面积和周长方法。再定义继承抽象图形类的正方形类。最后定义一个运行主类,构建圆和正方形对象,并计算它们的面积和周长。abstractclassShape{//抽象图形类

publicabstractdoublecalcArea(); publicabstractdoublecalcGirth();}classCircleextendsShape{//继承抽象图形类的圆类

privatedoubleradius; publicCircle(doubleradius){this.radius=radius;} publicdoublecalcArea(){ returnMath.PI*Math.pow(radius,2); } publicdoublecalcGirth(){return2*Math.PI*radius;}}第五页,共二十四页,编辑于2023年,星期二续例9-1classSquareextendsShape{//继承抽象图形类的正方形类

privatedoubleborder;//边

publicSquare(doubleborder){this.border=border;} publicdoublecalcArea(){ returnMath.pow(border,2); } publicdoublecalcGirth(){returnborder*4;}}publicclassExample1{… CircleaCircle=newCircle(1); System.out.println("构造了一个半径为1的圆"); System.out.println("圆面积"+aCircle.calcArea()); … SquareaSquare=newSquare(1); System.out.println("构造了一个边长为1的正方形");…第六页,共二十四页,编辑于2023年,星期二9.2.2对比抽象类(方法)与最终类(方法)抽象方法只有被派生类重写,才能实现具体功能。抽象类处于类继承层次结构中的顶层。最终类是不能被继承的类,处于类继承层次结构中最底层。最终类与抽象类是水火不相容的。最终方法是不能被派生类重写的方法。最终方法与抽象方法也是水火不相容,最终方法可以存于最终类,也可存于非最终类。关于抽象方法、一般方法与最终方法的作用总结如下:abstract方法只引入方法的名称。一般方法是方法的一个实现。final方法是方法的最后一个实现。第七页,共二十四页,编辑于2023年,星期二

9.3接口类型

9.3.1接口定义与实现可选publicinterface接口名{常量字段和抽象方法成员}接口体中主要有最终字段(即常量字段)和抽象方法两种成员,都默认为public,其中常量字段允许省略public和final,抽象方法允许省略public和abstract。接口的作用类似抽象类,不过方法只提供抽象的。接口的抽象方法由类来实现。实现接口语法形式如下:可选public等class类名implements接口表{含实现接口的类成员}实现接口就是定义一个类,为接口的所有抽象方法提供方法体。第八页,共二十四页,编辑于2023年,星期二【例9-2】定义图形接口,内含抽象的面积和周长方法等成员。定义实现该接口的圆类,实现面积和周长方法。再定义实现图形接口的正方形类。最后定义运行主类,构建圆和正方形对象,并计算它们的面积和周长。interfaceShapeable{//能成形的图形接口

publicfinaldoubleMIN_AREA=0;//可以省略publicfinal publicfinaldoubleMIN_GIRTH=0;//可以省略publicfinal publicabstractdoublecalcArea();//可以省略publicabstract publicabstractdoublecalcGirth();//可以省略publicabstract}classCircle2implementsShapeable{//实现图形接口的圆类

privatedoubleradius; publicCircle2(doubleradius){this.radius=radius;} publicdoublecalcArea(){//实现计算面积方法

returnMath.PI*Math.pow(radius,2); } publicdoublecalcGirth(){return2*Math.PI*radius;}}第九页,共二十四页,编辑于2023年,星期二续例9-2classSquare2implementsShapeable{//实现接口的正方形类

privatedoubleborder;//边

publicSquare2(doubleborder){this.border=border;} publicdoublecalcArea(){returnMath.pow(border,2);} publicdoublecalcGirth(){returnborder*4;}}… Circle2aCircle=newCircle2(1); System.out.println("构造了一个半径为1的圆"); System.out.println("圆面积"+aCircle.calcArea()); System.out.println("圆周长"+aCircle.calcGirth()); … Square2aSquare=newSquare2(1); System.out.println("构造了一个边长为1的正方形"); …第十页,共二十四页,编辑于2023年,星期二9.3.2通过接口来引用类——接口多态接口类型可声明变量,通过赋值来引用一个实现该接口的类对象。如可修改例9-2中代码:

ShapeableaShape; aShape=newCircle2(1);//接口变量引用实对象

System.out.println("构造了一个半径为1的圆");… aShape=newSquare2(1);//引用另一对象

System.out.println("构造了一个边长为1的正方形");…这种接口回调现象与类的多态性相似,是接口的多态性。因为同样形式的调用,aShape指向的对象不同(圆或正方形),调用的方法也不同,得到的结果当然也不同。第十一页,共二十四页,编辑于2023年,星期二

9.4接口多重继承与实现

9.4.1接口多重继承接口类型有一个大家族,接口之间也有继承与派生关系。接口允许多重继承,语法:可选publicinterface接口名extends父接口表

{常量字段和抽象方法成员}例如:interfaceIA{...}interfaceIB{...}interfaceICextendsIA,IB{...}第十二页,共二十四页,编辑于2023年,星期二9.4.2类实现多个接口允许一个类同时实现多个接口,如:classDimplementsIA,IB{...}类单一继承的同时,可同时实现多个接口。如:classE{...}classFextendsEimplementsIA,IB{...}继承一个父类并实现多个接口的类定义一般形式如下:可选public等class类名extends父类implements接口表{类成员}实现多个接口的类,必须重写各个接口的方法。第十三页,共二十四页,编辑于2023年,星期二

9.5包

9.5.1Java系统API包包就是类、接口等类型的命名存储空间,因此,包又称“类库”。API包功能和部分类型java.langJava基础类库,提供Java编程最基本的类和接口,例如System、String、Math和Thread类,Cloneable和Runnable接口java.util实用工具包,提供Arrays、Date、Random、Scanner等类,以及Collection<E>、Map<K,V>等接口java.io关于数据流与输入输出的包,提供BufferedReader、BufferedWriter、FileReader、FileWriter等类,以及DataInput、DataOutput等接口java.awt图形用户界面包,常用类有Frame、Button、Label、TextField、Color和Graphics等java.awt.event图形用户界面事件包,类有ActionEvent和ItemEvent等、接口有ActionListener和ItemListener等java.applet创建小程序的包,有Applet类和AudioClip接口等java.sql访问数据库的包,类有DriverManager等,接口有Connection、Statement和ResultSet等网络包,有Socke和ServerSocket等类javax.swing提供“轻量级”图形用户界面组件,类有JFrame、JButton、JLabel等第十四页,共二十四页,编辑于2023年,星期二9.5.2定义包定义包也叫声明包,语法:package包名;包语句必须放在源代码首行,一个源程序只能有一个包语句。包名一般采用小写字母,允许分级(分层)命名,以圆点“.”分隔。自定义的包对应文件夹,缺省包对应当前文件夹。例如,定义包语句:packagecom.fancy;这时,要创建对应的文件夹com\fancy。在Eclipse等集成开发环境中,创建包时可自动创建对应的文件夹。注意:分级包的命名往往与网站域名相反,例如:网站域名为,则包名就是com.fancy。第十五页,共二十四页,编辑于2023年,星期二【例9-3】定义包com.fancy,在包内放置抽象图形类Shape。packagecom.fancy;//定义包publicabstractclassShape{//抽象图形类

publicabstractdoublecalcArea();//抽象的计算面积方法

publicabstractdoublecalcGirth();//抽象的计算周长方法}在Eclipse环境下编写创建包的应用程序步骤:(1)创建Java项目(2)执行File|New|Package命令(3)执行File|New|Class命令如果执行File|New|Interface菜单命令,则出现NewJavaInterface对话框,以建立相应的接口。(4)最后输入代码第十六页,共二十四页,编辑于2023年,星期二9.5.3引入包引入包语句语法:import包名.*;//其中*号表示所有内容import包名.类名;import包名.接口名;一个源程序可使用多个import语句。import语句要放在package语句之后,类(或接口)定义之前。第十七页,共二十四页,编辑于2023年,星期二【例9-4】定义包com.fancy.aaa,并引入例9-3定义的包com.fancy。在本包中定义继承com.fancy.Shape类的圆类,并定义运行主类,构建圆对象,计算圆面积和周长。packagecom.fancy.aaa;//定义包importcom.fancy.*;//引入包classCircleextendsShape{//继承com.fancy.Shape类的圆类

privatedoubleradius; publicCircle(doubleradius){this.radius=radius;} publicdoublecalcArea(){//重写并实现计算面积方法

returnMath.PI*Math.pow(radius,2); } publicdoublecalcGirth(){return2*Math.PI*radius;}}第十八页,共二十四页,编辑于2023年,星期二续例9-4publicclassExample4{//主类

publicstaticvoidmain(String[]args){ CircleaCircle=newCircle(1); System.out.println("构造了一个半径为1的圆"); System.out.printf("圆面积:%.2f",aCircle.calcArea()); System.out.printf("\n圆周长:%.2f",aCircle.calcGirth()); }}第十九页,共二十四页,编辑于2023年,星期二【例9-5】定义包com.fancy.bbb,在该包中定义继承com.fancy.Shape类的正方形类(需引入例9-3定义的包com.fancy)。定义主类,在主类的main方法中构建正方形对象,计算其面积和周长。com\fancy\bbb\Square.java文件:packagecom.fancy.bbb;//定义包importcom.fancy.*;//引入包publicclassSquareextendsShape{ privatedoubleborder;//边

publicSquare(doubleborder){this.border=border;} publicdoublecalcArea(){//重写并实现计算面积方法

returnMath.pow(border,2); } publicdoublecalcGirth(){returnborder*4;}}第二十页,共二十四页,编辑于2023年,星期二续例9-5,

com\fancy\bbb

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论