第5章 继承与多态-4.ppt_第1页
第5章 继承与多态-4.ppt_第2页
第5章 继承与多态-4.ppt_第3页
第5章 继承与多态-4.ppt_第4页
第5章 继承与多态-4.ppt_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

1、Java语言与面向对象程序设计,【上节回顾】,构造函数的重载。(重点),第5章 继承与多态,5.1 继承的基本概念 5.2 类的继承 5.3 多态 5.4 方法的重载 5.5 构造方法的重载 5.6 包及其使用 5.7 接口,本节内容,5.6 包及其使用,5.6.1 包的基本概念 5.6.2 包的创建 5.6.3 包的使用,5.6 包及其使用,5.6.1 包的基本概念,为了更好地管理类,Java中引入了包的概念。Java利用“包”(package)来组织和管理类。 包实际上提供了一种命名机制和可见性限制机制,一个包的类不能重名,但不同包中的类可以重名。 包的分类 无名包。无须对包做任何什么,但

2、无法访问无名包中的类,无名包适合于局部应用。 有名包。可通过“包名.类名”来访问指定包中的类。 一个Java源文件称为一个“编译单元”,由一个编译单元生成的所有class文件归于一个无名包或有名包中 包对应于文件系统的目录结构。,5.6 包及其使用,5.6.2 包的创建(1/2),package语句作为java源文件的第一条语句,指明该编译单元中定义的类属于哪个包。若无此语句,系统会缺省为每一个 .java源文件创建一个无名包。创建包的语句格式为: package 包名; 包名一般采用小写字母,一个编译单元中只允许有一个package语句。,【课堂示例(一)】,演示包的创建过程。创建一个包,其

3、中包含前面使用过的PhoneCard类和它的子类:Number-PhoneCard,D200-Card。在同一个包中创建一个测试类testPackage。 方法一:手工方式 方法二:自动方式,CASE1:testPackage.java,手工方式总结: 编译:javac 手工建立一个与包名对应的目录,把生成的.class文件移到该目录中; 执行:java 包名.主类名 自动方式总结: 编译:javac d 目录名 源文件名 执行:java 包名.主类名,5.6 包及其使用,5.6.2 包的创建(2/2 ),手工方式 自动方式 javac d 目录名 源文件名 其中,目录就是指定创建包的位置,j

4、avac命令会根据源文件中的package语句声明的包,在指定位置下自动创建一个与包名同名的目录,如cardclasses,并将源文件所生成的class文件全部放到这个新建的目录中,从而完成包的创建和类的加入。 若包的目录已经存在,上述命令就会跳过创建目录的步骤,而直接将生成的字节码文件放到目录中,若果类文件名有重复,系统会用新的类文件取代旧的类文件,即完成包中类的更新。 如果源文件中无package语句,所生成的类就放置无名包中,而无名包就在当前目录下,不需要为包创建专门的目录。,5.6 包及其使用,5.6.3 包的使用(1/2),一个类要用到其它类,无非是 (1)访问这个类的静态成员; (

5、2)继承这个类; (3)创建这个类的对象并访问对象的属性和方法。 对于同一个包中的其它类,通过类名就可以访问,如何在包外访问包中的public类? 需要指定类所在的包,3种方式如下: (1)使用包名作为类的前缀; (2)引入需要使用的类; (3)引入整个包。,【课堂示例(二)】,对示例一进行修改,创建一个包,其中包含前面使用过的PhoneCard类和它的子类:Number-PhoneCard,D200-Card。在不同包中创建一个测试类testPackage对以上类进行测试。,Java语言与面向对象程序设计第13讲,Java语言与面向对象程序设计第13讲,Java语言与面向对象程序设计第13讲

6、,Java语言与面向对象程序设计第13讲,5.6 包及其使用,5.6.3 包的使用(2/2),【问题】虽然在程序中可以通过多种方式指定包,但系统又到什么地方查找这个包呢? 【解决方案】设置环境变量classpath,其指明了查找包的路径。,Java语言与面向对象程序设计第13讲,5.7 接口,Java接口是用来组织应用中的各类并调节它们的相互关系的一种结构。更准确地说,接口是用来实现类间多重继承功能的结构。,5.7 接口,5.7.1 接口概述 5.7.2 声明接口 5.7.3 实现接口,5.7 接口,5.7.1 接口概述,Java中的接口在语法上有些相似于类,它定义了若干个抽象方法和常量,形成

7、一个属性集合,该属性集合通常对应了某一组功能,其主要作用是可以帮助实现类似于类的多重继承的功能。 由于Java只支持单重继承,类层次结构是树状结构,随着类结构树的生长,越是处在下层的子类,它的间接父类(间接父类是直接父类的父类,即祖先)越多,所继承的方法也会越来越多,造成子类成员的膨胀、庞杂,难以管理和掌握。 为了使Java程序的类层次结构更加合理,更符合实际问题的本质,编程者可以把用于完成特定功能的若干属性组织成相对独立的属性集合;凡是需要实现这种特定功能的类,都可以继承这个属性集合并在类内使用它,这种属性集合就是接口。,5.7 接口,5.7.1 接口概述,接口中的属性都是常量,接口中的方法

8、都是没有方法体的抽象方法。也就是说,接口定义的仅仅是实现某一特定功能的一组功能的对外接口和规范,而并没有真正地实现这个功能,这个功能的真正实现是在“继承”这个接口的各个类中完成的,要由这些类来具体定义接口中各抽象方法的方法体。因而在Java中,通常把对接口功能的“继承”称为“实现”。 接口的应用主要有以下两点: 规定某些类应该实现的方法的调用接口; 通过定义一个能实现多个接口的类,模拟类的多重继承。,5.7 接口,5.7.2 声明接口(1/2),语句格式: public interface 接口名 extends 父接口名列表 / 接口体 / 常量域声明 publicstaticfinal 域

9、类型 域名 = 常量值; / 抽象方法声明 publicabstractnative返回类型 方法名(参数列表) throws 异常列表; ,5.7 接口,5.7.2 声明接口(2/2),接口是由常量和抽象方法组成的特殊类。一个类只能有一个父类,但是它可以同时实现若干个接口,即实现了多重继承。 接口的访问控制符只有public一个。 接口也具有继承性,一个接口可以有一个以上的父接口。 接口中的属性默认为public static final,方法默认为public abstract。,Java语言与面向对象程序设计第13讲,5.7 接口,5.7.3 实现接口,一个类要实现接口时,请注意以下问题

10、: (1) 用implements关键字声明该类将要实现哪些接口。 (2) 如果实现某接口的类不是abstract的抽象类,则在类的定义部分必须实现指定接口的所有抽象方法,而且方法头部分应该与接口中的定义完全一致。 (3) 如果实现某接口的类是abstract的抽象类,则它可以不实现该接口所有的方法。但是对于这个抽象类任何一个非抽象的子类而言,它们所实现的接口中的所有抽象方法都必须有实在的方法体。 (4) 一个类在实现某接口的抽象方法时,必须使用完全相同的方法头。如果所实现的方法与抽象方法有相同的方法名和不同的参数列表,则只是在重载一个新的方法,而不是实现已有的抽象方法。 (5) 接口的抽象方法的访问限制符都已指定为public,所以类在实现方法时,必须显式地使用public修饰符,否则将被系统警告为缩小了接口中定义的方法的访问控制范围。,【课堂

温馨提示

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

评论

0/150

提交评论