版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第4章 包、接口、类库4.1包n包的概念:包的概念:n包是组织包是组织java程序中类的一种手段。程序中类的一种手段。n包实际上是类和接口的集合,利用包可以把常用的类或功能相似包实际上是类和接口的集合,利用包可以把常用的类或功能相似的类放在一个程序包中,就像文件放在文件夹中一样,使类的管的类放在一个程序包中,就像文件放在文件夹中一样,使类的管理更清晰,更有条理。理更清晰,更有条理。n包是一种松散的类集合,一般不要求处于同一包中的类有明确的包是一种松散的类集合,一般不要求处于同一包中的类有明确的相互关系,但通常把需要一起工作的类放在一个包中。相互关系,但通常把需要一起工作的类放在一个包中。n使用
2、包的一个主要原因还在于保证类名的惟一性。假设两个程序使用包的一个主要原因还在于保证类名的惟一性。假设两个程序员都提供了一个员都提供了一个employee类。只要他们把类放在不同的包中,类。只要他们把类放在不同的包中,那么就不会有冲突。那么就不会有冲突。 如:如: department1.employee department2.employee4.1包n包的创建包的创建n格式:格式:package 程序包名程序包名;nnote:n若若package未指定,则所有的类都被组合到一个未未指定,则所有的类都被组合到一个未命名的缺省包中,不能被其他包中的类引用。命名的缺省包中,不能被其他包中的类引用。
3、nPackage语句必须放在语句必须放在java源文件的第一行,该行源文件的第一行,该行前可以有空格及注释行。前可以有空格及注释行。n创建包就是在当前文件夹下创建一个子文件夹,以便创建包就是在当前文件夹下创建一个子文件夹,以便存放这个包中包含的所有类文件。存放这个包中包含的所有类文件。“.”代表目录分隔代表目录分隔符。符。package SubClass;package MyClass.SubClass;4.1包n包的引用包的引用n将类组织成包的目的是为了更好地利用包中的类,为了使用将类组织成包的目的是为了更好地利用包中的类,为了使用java中已提供的类,需要用中已提供的类,需要用import
4、语句来引入所需要的类语句来引入所需要的类 (在每个类名前加上完整的包名的方式也可访问该类,但显(在每个类名前加上完整的包名的方式也可访问该类,但显然重复而冗长)。然重复而冗长)。n格式:格式: import package1.package2.(classname或或*) eg: import java.awt.*; import java.util.Date;nNote: 编译器为所有程序自动引入包编译器为所有程序自动引入包java.lang,因此不必用因此不必用import语句语句引入它所包含的所有类,但若是需要使用其他包中的类,则必须用引入它所包含的所有类,但若是需要使用其他包中的类,则
5、必须用import语句引入。语句引入。 使用使用*只能表示本层次的所有类,而不包括子层次下的类。只能表示本层次的所有类,而不包括子层次下的类。import语句必须先于所有类的声明语句必须先于所有类的声明4.1包n编译和运行包中的类编译和运行包中的类n编译编译 使用使用javac的的 d 参数来指定包的根目录参数来指定包的根目录 在在classpath中添加包的根目录中添加包的根目录n运行方式运行方式: 进入启动运行类所在的目录(如果已经在进入启动运行类所在的目录(如果已经在classpath中添加中添加了启动运行类所在的目录,则在任何位置下都可以)了启动运行类所在的目录,则在任何位置下都可以)
6、 使用使用 java 运行类的类名运行类的类名 的方式运行程序的方式运行程序.n举例见:举例见:njavacode包的使用包的使用Mypk2-rectangle文件夹文件夹4.1包nJava源文件与类文件的管理源文件与类文件的管理n在应用系统目录下分别创建源文件目录与类文件目录,在应用系统目录下分别创建源文件目录与类文件目录,并把类文件目录加入到并把类文件目录加入到classpath环境变量中环境变量中 比如比如,可以创建下列目录:可以创建下列目录: D:javaworksource作为存放源文件的顶层(根)路作为存放源文件的顶层(根)路径径 D:javaworkclasses作为存放类和接口
7、的包的根路作为存放类和接口的包的根路径径n每个源文件都存放在每个源文件都存放在source目录中以包名为相对路目录中以包名为相对路径的子目录下;径的子目录下;n编译后产生的类文件以所属包名为相对路径,存储在编译后产生的类文件以所属包名为相对路径,存储在classes目录下。目录下。4.1包n上机练习:上机练习:n1、编译运行、编译运行javacode包的使用包的使用mypk文件夹中文件夹中的例子的例子 D:javaworksource-放放Paker.java,PakerTest.java D:javaworkclasses-放前面两个文件中编译产生的放前面两个文件中编译产生的类文件类文件n2
8、、将、将PakerTest.java代码去除代码去除import语句,加语句,加入到入到Paker.java源文件的后面。保存源文件的后面。保存Paker.java,编译运行编译运行Paker.javan3、p212,实验五,实验五,1.基本指导(指导内容基本指导(指导内容1)。)。4.2 接口nJava中的接口是一系列方法的声明,是一些方法特征的集中的接口是一系列方法的声明,是一些方法特征的集合合n一个接口只有方法的特征没有方法的实现,因此这些方法可一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同以在不同的地方被不同的类实现,而这些实现
9、可以具有不同的行为(功能)。的行为(功能)。n Java引入接口的概念来弥补类的单一继承所带来的缺陷。引入接口的概念来弥补类的单一继承所带来的缺陷。(一个类可以实现多个接口,一个接口可以继承多个父接口)(一个类可以实现多个接口,一个接口可以继承多个父接口)4.2.1 接口的定义(声明)n接口的定义和类的定义比较相近,但使用接口的定义和类的定义比较相近,但使用的是的是interface关键字。关键字。n接口定义的语法:接口定义的语法:修饰符修饰符 interface 接口名接口名extends 父接口名列表父接口名列表/常量域声明常量域声明public static final 域类型域类型 域
10、名常量值域名常量值;/抽象方法声明抽象方法声明public abstract 返回值类型返回值类型 方法名方法名(参数列表)参数列表);n接口的修饰符为:缺省或接口的修饰符为:缺省或publicn接口定义举例:接口定义举例:n见见javacode接口接口DriveControl.java,Repairable.java4.2.1 接口的定义n接口定义的特点:接口定义的特点:n接口不包含方法的任何实现接口不包含方法的任何实现,都是抽象方法都是抽象方法 接口的功能实现是在实现了这个接口的各个类中完成的,由这接口的功能实现是在实现了这个接口的各个类中完成的,由这些类来具体定义接口中所有抽象方法的方法
11、体。些类来具体定义接口中所有抽象方法的方法体。 在接口中只能给出这些抽象方法的方法名、返回值和参数列表,在接口中只能给出这些抽象方法的方法名、返回值和参数列表,而不能定义方法体。而不能定义方法体。n接口中的方法接口中的方法都是具有都是具有public和和abstract属性属性的方的方法,故而这些修饰符也可以省略。法,故而这些修饰符也可以省略。n接口中定义的域必须是静态或者拥有接口中定义的域必须是静态或者拥有final控制符,字控制符,字段自动为段自动为public static final类型。(很少在接口类型。(很少在接口中定义域变量)中定义域变量)n接口中不包含构造方法的定义(即接口不能
12、直接用来接口中不包含构造方法的定义(即接口不能直接用来创建对象)创建对象)4.2.2 接口的实现n接口中定义的方法需要在具体的类中实现,这个过程称接口中定义的方法需要在具体的类中实现,这个过程称为为接口的实现接口的实现。n用用implements关键字在类的声明部分声明该类将实现关键字在类的声明部分声明该类将实现哪些接口。哪些接口。n类实现接口举例:类实现接口举例:njavacode接口文件夹接口文件夹,Car.java和和DriveControl.java。n接口可以作为一种引用类型使用接口可以作为一种引用类型使用(参见参见Car.java和和 DriveControl.java ): Dr
13、iveControl control=new Car(); control.startEngine();4.2.2 接口的实现n接口实现的注意事项:接口实现的注意事项:n一个类可以同时实现多个接口。对多个接口的实现是一个类可以同时实现多个接口。对多个接口的实现是在在implements后面跟用逗号隔开的接口名列表。后面跟用逗号隔开的接口名列表。n一个一个非抽象类非抽象类实现接口的时候,类中必须包含所有接实现接口的时候,类中必须包含所有接口中定义的方法实现。口中定义的方法实现。 (如果不需要某个方法,也要将其定义成一个空方法体的方(如果不需要某个方法,也要将其定义成一个空方法体的方法)。法)。n
14、对接口中方法进行实现,必须显式地使用对接口中方法进行实现,必须显式地使用public控制控制符,否则视为对接口定义方法访问权限的削弱。符,否则视为对接口定义方法访问权限的削弱。n对接口中方法进行实现,类中对应的实现方法的对接口中方法进行实现,类中对应的实现方法的方法方法名、方法返回值和方法的参数列表名、方法返回值和方法的参数列表形式必须一致,否形式必须一致,否则视为一个新的方法的重载。则视为一个新的方法的重载。4.2.2 接口的实现n实现多个接口的案例:实现多个接口的案例:(见见Car.java, DriveControl.java , Repairable.java)n多个类实现同一个接口的
15、例子:见多个类实现同一个接口的例子:见music.javan上机练习:上机练习:np215,实验五:实验五:n1. 练习思考(思考问题练习思考(思考问题1,2)n2.实训作业(实训作业(1)4.3 抽象类n抽象类:类定义时,类的修饰符有抽象类:类定义时,类的修饰符有abstract修饰符,抽象类是所有子类的修饰符,抽象类是所有子类的公共域和公共方法的集合公共域和公共方法的集合。n抽象方法:抽象方法:n只能出现在抽象类(或接口)中只能出现在抽象类(或接口)中n抽象方法由抽象方法由abstract修饰符来修饰,是仅有修饰符来修饰,是仅有方法头没有方法体的方法方法头没有方法体的方法n对抽象方法的具体
16、实现在抽象类的子类中(或对抽象方法的具体实现在抽象类的子类中(或实现接口的类中)完成。实现接口的类中)完成。4.3 抽象类Note:n抽象类是指抽象类是指不能不能直接被实例化的类(在程序中不能用抽象直接被实例化的类(在程序中不能用抽象类作为模板来创建对象)类作为模板来创建对象),因此一般作为其它类的超类因此一般作为其它类的超类,与与final类正好相反类正好相反n抽象类中的抽象方法抽象类中的抽象方法(是仅有方法头没有方法体的方法是仅有方法头没有方法体的方法,如如下所示下所示),由继承类提供细节由继承类提供细节举例参见举例参见javacode抽象类抽象类&抽象方法抽象方法SumArea2
17、.javan抽象类中不一定有抽象方法,但定义抽象方法的类必须是抽象类中不一定有抽象方法,但定义抽象方法的类必须是抽象类抽象类.n一个抽象类的子类如果不是抽象类,则它必须为父类中的所有抽一个抽象类的子类如果不是抽象类,则它必须为父类中的所有抽象方法书写方法体,即实现对父类抽象方法的覆盖,否则该子类象方法书写方法体,即实现对父类抽象方法的覆盖,否则该子类也是抽象类也是抽象类n举例说明见下页:举例说明见下页:4.3 抽象类改错改错1:public class MyMainpublic static void main(String args)IamAbstract ia=new IamAbstrac
18、t();abstract class IamAbstractIamAbstract()4.3 抽象类n改错改错2:class IamAbstract final int f;double d;abstract void method();4.3 抽象类class Fish extends Animalpublic void run() System.out.println(fish is swimming); void breathe()System.out.println(fish is bubbling);class LandAnimal extends Animalpublic void
19、 breathe();改错改错3:abstract class Runner public abstract void run();abstract class Animal extends Runnerpublic abstract void breathe();4.3.1 抽象类的作用n程序中定义抽象类的目的是为一类对象建程序中定义抽象类的目的是为一类对象建立抽象的模型,在同类对象所对应的类体立抽象的模型,在同类对象所对应的类体系中,抽象类往往在顶层。系中,抽象类往往在顶层。n定义抽象类和抽象方法可以向用户和编译定义抽象类和抽象方法可以向用户和编译器明确表明该类的作用和用法,使类体系器明确
20、表明该类的作用和用法,使类体系设计更加清晰设计更加清晰,因此是因此是java的一种很有用的一种很有用的面向对象机制。的面向对象机制。n举例见下面几页举例见下面几页4.3.1 抽象类的作用/已有两个类已有两个类Circle和和Rectangle,完成相关参数的计算完成相关参数的计算 class Circle public int r; Circle(int r) this.r=r; /this指指这个对象的这个对象的 public float area() return 3*r*r; /取近似取近似class Rectangle public int width,height; /这里不需这里不
21、需this Rectangle (int w, int h) width=w;height=h; public float area() return width*height; 4.3.1 抽象类的作用n假设有若干个假设有若干个Circle,以及若干个以及若干个Rectangle,希望计算希望计算它们的总面积它们的总面积,直截了当的做法是将它们分别放到两个数直截了当的做法是将它们分别放到两个数组中组中,用两个循环用两个循环,加上一个加法加上一个加法,这种做法是不漂亮的这种做法是不漂亮的n例子程序见例子程序见javacode抽象类抽象类&抽象方法抽象方法SumArea1.javan如果
22、还有其它形状如果还有其它形状,triangle,ellipses等等,上述方法显得上述方法显得“累赘累赘”,我们希望有一种统一的表示我们希望有一种统一的表示,例如用一个数组例如用一个数组shape,接受所有的形状接受所有的形状,然后用然后用 for (i=0;ishape.length;i+) sum+=shapei.area(); 4.3.1 抽象类的作用abstract class Shape abstract float area();class Circle extends Shape public int r; Circle(int r) this.r=r; public float
23、 area() return 3*r*r; class Rectangle extends Shapepublic int width,height; Rectangle (int w, int h) width=w;height=h; public float area() return width*height; 例子程序见例子程序见javacode抽象类抽象类&抽象方法抽象方法SumArea2.java)抽象类和接口(小结)n接口中的所有方法都是抽象的,而抽象类可以定义带有接口中的所有方法都是抽象的,而抽象类可以定义带有方法体的方法体的非抽象方法非抽象方法。n一个类可以实现多个接
24、口,但只能继承一个抽象父类。一个类可以实现多个接口,但只能继承一个抽象父类。n接口与实现它的类不构成类的继承体系,即接口不是类接口与实现它的类不构成类的继承体系,即接口不是类体系的一部分。因此,不相关的类也可以实现相同的接体系的一部分。因此,不相关的类也可以实现相同的接口。口。n抽象类是属于一个类的继承体系,并且一般位于类体系抽象类是属于一个类的继承体系,并且一般位于类体系的顶层。的顶层。n上机练习:上机练习:np216,n实验五,实验五,2.练习思考(思考问题练习思考(思考问题3)抽象类和接口(小结)n使用接口的优势使用接口的优势n类通过实现多个接口可实现多重继承,能类通过实现多个接口可实现
25、多重继承,能够使子类对象上溯造型为多个基础类(接够使子类对象上溯造型为多个基础类(接口)类型。口)类型。n接口能抽象出不相关类之间的相似性,而接口能抽象出不相关类之间的相似性,而没有强行形成类的继承关系。没有强行形成类的继承关系。n使用接口,可以同时获得抽象类以及接口使用接口,可以同时获得抽象类以及接口的优势。的优势。4.4 Java类库类库n4.4.1 Java类库结构类库结构njava.lang包包 nJava语言核心包,包括语言核心包,包括Java语言基础类,如基本数据语言基础类,如基本数据类型、基本数值函数、字符串处理、异常处理等。类型、基本数值函数、字符串处理、异常处理等。n其中的类其中的类Object是最重要是是最重要是JAVA中所有类的基础类,中所有类的基础类,java.lang包不需要用包不需要用import语句引入,也就是说,每语句引入,也就是说,每个程序运行时,系统都会自动引入个程序运行时,系统都会自动引入Java.lang包。包。nlang包中的包中的Math类注意
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人工智能在市场信息挖掘中的应用
- 2027年巴中光雾山职业学院高职单招职业技能考试模拟试卷及完整答案详解【夺冠系列】
- 2027年郴州技师学院苏仙高职部单招职业技能考试模拟试卷附参考答案详解(培优A卷)
- 2026年秋季大学新生军训 军人礼仪与行为规范教学方案
- 2026年智能汽车领域创新驱动报告
- 2026二下数学全册易错题课件
- 2026北师大二下全册公开课课件
- 2026北师大二下原创情境课件
- 2026年景区接驳物品寄存服务
- 2026毛里求斯旅游业市场现状消费分析及投资评估发展规划研究报告
- 船员职业健康管理制度
- CJ/T 297-2016桥梁缆索用高密度聚乙烯护套料
- 工业机器人调试与维护计划
- 登革热诊疗方案(2024年版)
- 建筑工程主体结构的施工方案
- 知识产权合规管理体系解读
- 店铺合租分租合同模板
- 新疆城市绿地养护管理标准
- DB2205T 3.1-2024 通化人参种植技术规程 第1部分:林下种植
- 防洪防汛风险评估报告
- 2023年08月人民网(总网)招考1名英文编辑笔试历年难易错点考题荟萃附带答案详解
评论
0/150
提交评论