Java面向对象高级特性

上传人:宝路 文档编号:50737389 上传时间:2018-08-10 格式:PPT 页数:58 大小:249.54KB
返回 下载 相关 举报
Java面向对象高级特性_第1页
第1页 / 共58页
Java面向对象高级特性_第2页
第2页 / 共58页
Java面向对象高级特性_第3页
第3页 / 共58页
Java面向对象高级特性_第4页
第4页 / 共58页
Java面向对象高级特性_第5页
第5页 / 共58页
点击查看更多>>
资源描述

《Java面向对象高级特性》由会员分享,可在线阅读,更多相关《Java面向对象高级特性(58页珍藏版)》请在金锄头文库上搜索。

1、第五章Java面向对象高级特性DateDate1 1本章要点 Static 、final关键字 抽象类 接口 包 内部类 访问控制 其它DateDate2 25.1 static关键字用static(静态的)修饰的变量或方法又称为类变 量和类方法。 类变量(静态变量)在成员变量声明时使用static关键字。注意点:类变量只在系统加载其所在类时分配空间并 初始化,实例化对象时不再分配空间,所有实例对象将共享类的静态变量。用途 可以用来在实例对象之间进行通信DateDate3 3类似于其他语言中的全局变量,可以用类 名直接调用。如: Count.counter例题5-1 static成员变量举例(

2、P115) 类方法(静态方法) 在类的成员方法声明中带有static关键字,访问时可通过类名访问 例题5-2 static方法举例(P117)类名StaticStatic变量变量DateDate4 4注意点静态方法只能访问方法体内定义的局部变量 、自己的参数和静态变量。(因静态方法不 是通过调用对象实例,故在静态方法中没有 this指针)子类不能重写父类的静态方法,不能将非静 态方法重写为静态的方法。main() 是一个静态方法,是程序的入口点 可以使JVM不创建实例对象就可以运行方法 。DateDate5 5静态初始化程序类中不属于任何方法体中,并以static关键字修饰 的语句块。如: s

3、taticI=5;System.out.println(“Static code:I=”+I+) ; 注意静态语句块只在加载类时执行一次,通常用来进行类成员变量的初始化。 例题5-3:静态语句块与静态变量的访问。DateDate6 65.2 final关键字 在Java中,可以用final关键字声明类、成员方法、成员变量。被定义成final的类不能再派生子类如:Java.lang.String为一个final类。被定义为final的方法不能重写,优点是在运 行时进行效率优化。被定义为final的变量只能被赋值一次,常用来定义常量,变量名一般大写。例题5-4 final 变量在构造方法中赋值Da

4、teDate7 75.3抽象类 抽象方法 只有定义而没有方法体的方法。 抽象类 包含一个或多个抽象方法的类。 定义抽象类的格式为:abstract class 抽象类名 注意点抽象类不能实例化。可派生子类,在子类 中具体定义方法的功能。DateDate8 8目的是为一类对象建立抽象的模型,在同类对象 所对应的体系中抽象类往往位距顶层。使类的设计变的清晰、支持多态、为类的体系提供通用的接口。 DateDate9 9Employee e=new Manager(); /正确Employee e=new Employee(); /错误abstract class Employeeabstract v

5、oid raiseSallory(int i);Class Manager extends Employee void raiseSallory(int i);DateDate10105.4 接口接口定义格式:修饰符interface接口名extends 父接接口体;修饰符为public时,指明任何类均可以使 用这个接口。修饰符缺省时,只有与该接口定义在同一 个包中的类才可以访问该接口DateDate1111接口的实现与使用implements 关键字用来表示实现某个接口 , 在类体中可以使用接口中定义的常量,且须 实现接口中定义的所有方法。一个类可以实现多个接口,在implements中 用

6、“,” 分隔。例如: Public interface Flyerpublic void takeoff();public void land();public void fly();DateDate1212Public class Airplane implements Flyerpublic void takeoff ( )/ 实现起飞的操作 public void land ( )/下落 public void fly( ) /起飞 例题5-5:通过接口实现多态示例.DateDate1313多重继承Java中规定一个类只能继承一个父类,但可 以实现多个接口, Java是利用接口实现多 重

7、继承的。父类方法 interface_1 interface2 interface_n抽象或具体父类Interface_1 Interface_2Interface_n子类DateDate1414通过继承扩展接口通过创建接口的子接口来增加新的方法。如:Interface Shapevoid draw();void erase();interface ShapeArea extends Shapedouble area();DateDate1515接口与抽象类两者有一定的相似,又有区别 接口中方法都是抽象的,而抽象类中可以 定义带有方法体的不同方法 一个类可以实现多个接口,而只可继承一 个抽象父

8、类 接口不是类体系的一部分,即与实现它的 类不构成继承体系。抽象类通常位于类体 系顶层。 接口可用于多重继承。DateDate16165.5 包包的概念Java中包是相关类与接口的一个集合,它提供了命 名空间的管理和访问。包具有特定的访问控制权限 。Java中编译器把包对应于文件系统的目录和文件管 理,还可以使用压宿文件的格式存储。JDK中提供的包有 Java.applet Java.awt Java.event 等。例如:名为 Java.applet的包中,所有类文件都存储 在目录 classpathjavaapplet 下,这里classpath 由环境变量来设定。 DateDate171

9、7包机制的优点 易根据包中类的功能找到所需要的类,包中的类是 相关的。 每个包都是命名空间,不同包中类的名字不冲突。 同一个包中的类之间有比较宽松的访问机制。 包的定义与使用定义用关键字 package 如:package graphics;说明:.package语句指定某类加入graphics包,并存放路 径为 classpathgraphicsDateDate1818.如原文件中没有package语句,则指定为无 名包,通常放在源文件的目录下。.package只能有一条,并在源程序的第一行 。.一个类只能属于一个包.包名以“.”为分隔符 DateDate1919使用包成员import 语句

10、放在源程序的前面如:import graphics .circle /引入包中的Circle类import graphics.* /引入包中所有的类如果没有用import语句引入包的类,则可用长名引用类格式: 包名.类名如:graphics.circle mycircle=new graphics.circle()通常没有必要这样做。DateDate2020包使用示例例5.6定义二维几何图形的包并使用DateDate21215.6访问控制Java中有四中不同的访问权限private-私有的 protected-受保护的public - 公开的 缺省(default)权限 修饰符 同一类 同一包

11、 子类 全局private Ydefault Y Yprotected Y Y Ypublic Y Y Y YDateDate22225.7 内部类内部类是在一个类的定义中定义的类,也 称为嵌套类。内部类可作为外包类(包容类)的一个成 员使用,可以访问外包类的所有成员(包 括带有static、private的成员变量和方法 )。 例题5-8 内部类访问外包类成员(P139) 例题5-9 内部类通过修饰符访问同名外包类 成员(P140)DateDate2323在外包类的语句块中定义内部类内部类可以定义在一个方法体的语句块中 定义,这时内部类可以访问语句块中的局 部变量,但只限于在该语句块运行期内

12、, 当该方法运行结束后内部类对象将不能访 问所在语句块中的局部变量。例题5-10DateDate2424在外包类以外的其他类中访问内部类对于可在外包类之外访问的内部类,引用 内部类时必须使用完整的标识:外包名.内部类名假设B 是A的内部类则有A a=new A( )A.B b=a.new B( ) 例题5-11 在外包类之外访问内部类DateDate2525内部类的特点: 内部类可以使用它所在类的静态成员变量 、实例成员变量和方法中的局部变量。 内部类的修饰符有abstract,private或 protected。 内部类可作为其他类的成员。DateDate26265.8 其它 基本数据类型

13、的包装类 集合类 DateDate27275.8.1 基本数据包装类基本数据类型在java.lang包中都有一个wrapper 类。基本数据类型Wrapper类基本数据类型Wrapper类boolean BooleancharCharacterbyte BytelongLongshortShortfloatFloatintIntegerdoubleDoubleDateDate2828每个包装类中提供了有用的方法和常量MIN_VALUE MAX_VALUE 数据类型的转换Integer wint=new Integer(18);int p=wint.intValue();int x=Intege

14、r.valueof(“123”).intValue();int y=Integer.parseInt(“123”);String s= (new Integer(125).toString();DateDate29298.2集合类集合包含一组对象。在这个对象中存放指 向其他对象的引用Java Collection API的核心接口colletionList SetSortedSetMapSortedMapDateDate3030CollectionCollectionCollection接口是集合接口的根,它定义了集合 的通用API。JDK中没有提供该接口的实现类, 而是提供了它的子接口。例如

15、:SET和LIST Setset中的元素不能重复,是数学中集合的抽象 ListList是一个有序的集合,称为列表或序列。可以 包含重复的元素,矢量Vector就是一种常用的 List。 DateDate3131MapMap实现键值到值的映射。Map中不能包含重复 的键值,每个键值最多只能映射到一个值。 Hashtable就是一个常用的Map。 SortedSet 和SortedMapSortedSet 和SortedMap分别是具有排序性能的 Set和Map。DateDate3232几种常用的集合SetSet继承了接口Collection接口,包含的方法都是 从Collection接口继承而来

16、。包含方法见P145在JDK中实现了Set接口的实用类有:HashSet类 TreeSet类LinkedHashset类。HashSet类是采用Hash表实现了Set接口。其中元 素存储在一个Hash表中,并且这些元素没有固 定的顺序。由于采用Hash表,当集合中元素数 量较大时其访问效率比线性表要快。DateDate3333实现Set的示例 例题5-12 Set的示例import java.util.*; public class FindDups public static void main(String args) Set s = new HashSet();/创建一个HashSet对象,缺省的初始容量是16。for (int i=0; i/定义 class-name=new c

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

当前位置:首页 > 中学教育 > 教学课件

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