Java面向对象高级特性.ppt
《Java面向对象高级特性.ppt》由会员分享,可在线阅读,更多相关《Java面向对象高级特性.ppt(58页珍藏版)》请在三一办公上搜索。
1、2023/11/7,1,第五章,Java面向对象高级特性,2023/11/7,2,本章要点,Static、final关键字抽象类接口包内部类访问控制其它,2023/11/7,3,5.1 static关键字,用static(静态的)修饰的变量或方法又称为类变量和类方法。类变量(静态变量)在成员变量声明时使用static关键字。注意点:类变量只在系统加载其所在类时分配空间并 初始化,实例化对象时不再分配空间,所有 实例对象将共享类的静态变量。用途 可以用来在实例对象之间进行通信,2023/11/7,4,类似于其他语言中的全局变量,可以用类 名直接调用。如:Count.counter 例题5-1 s
2、tatic成员变量举例(P115)类方法(静态方法)在类的成员方法声明中带有static关键字,访问时可通过类名访问例题5-2 static方法举例(P117),类名,Static变量,2023/11/7,5,注意点 静态方法只能访问方法体内定义的局部变量、自己的参数和静态变量。(因静态方法不是通过调用对象实例,故在静态方法中没有this指针)子类不能重写父类的静态方法,不能将非静态方法重写为静态的方法。main()是一个静态方法,是程序的入口点可以使JVM不创建实例对象就可以运行方法。,2023/11/7,6,静态初始化程序 类中不属于任何方法体中,并以static关键字修饰的语句块。如:s
3、tatic I=5;System.out.println(“Static code:I=”+I+);注意 静态语句块只在加载类时执行一次,通常用来 进行类成员变量的初始化。例题5-3:静态语句块与静态变量的访问。,2023/11/7,7,5.2 final关键字,在Java中,可以用final关键字声明类、成员 方法、成员变量。被定义成final的类不能再派生子类如:Java.lang.String为一个final类。被定义为final的方法不能重写,优点是在运行时进行效率优化。被定义为final的变量只能被赋值一次,常 用来定义常量,变量名一般大写。例题5-4 final 变量在构造方法中赋
4、值,2023/11/7,8,5.3抽象类,抽象方法 只有定义而没有方法体的方法。抽象类 包含一个或多个抽象方法的类。定义抽象类的格式为:abstract class 抽象类名 注意点 抽象类不能实例化。可派生子类,在子类中 具体定义方法的功能。,2023/11/7,9,目的是为一类对象建立抽象的模型,在同类对象所对应的体系中抽象类往往位距顶层。使类的设计变的清晰、支持多态、为类的体 系提供通用的接口。,2023/11/7,10,Employee e=new Manager();/正确 Employee e=new Employee();/错误,abstract class Employee a
5、bstract void raiseSallory(int i);Class Manager extends Employee void raiseSallory(int i);,2023/11/7,11,5.4 接口,接口定义格式:修饰符interface接口名extends 父接 接口体;修饰符为public时,指明任何类均可以使用这个接口。修饰符缺省时,只有与该接口定义在同一个包中的类才可以访问该接口,2023/11/7,12,接口的实现与使用 implements 关键字用来表示实现某个接口,在类体中可以使用接口中定义的常量,且须实现接口中定义的所有方法。一个类可以实现多个接口,在im
6、plements中用“,”分隔。例如:,Public interface Flyer public void takeoff();public void land();public void fly();,2023/11/7,13,Public class Airplane implements Flyer public void takeoff()/实现起飞的操作 public void land()/下落 public void fly()/起飞,例题5-5:通过接口实现多态示例.,2023/11/7,14,多重继承,Java中规定一个类只能继承一个父类,但可以实现多个接口,Java是利用
7、接口实现多重继承的。,父类方法 interface_1 interface2 interface_n,抽象或具体父类,Interface_1,Interface_2,Interface_n,子类,2023/11/7,15,通过继承扩展接口,通过创建接口的子接口来增加新的方法。如:,Interface Shape void draw();void erase();interface ShapeArea extends Shape double area();,2023/11/7,16,接口与抽象类,两者有一定的相似,又有区别接口中方法都是抽象的,而抽象类中可以定义带有方法体的不同方法一个类可以实
8、现多个接口,而只可继承一个抽象父类接口不是类体系的一部分,即与实现它的类不构成继承体系。抽象类通常位于类体系顶层。接口可用于多重继承。,2023/11/7,17,5.5 包,包的概念 Java中包是相关类与接口的一个集合,它提供了命名空间的管理和访问。包具有特定的访问控制权限。Java中编译器把包对应于文件系统的目录和文件管理,还可以使用压宿文件的格式存储。JDK中提供的包有 Java.applet Java.awt Java.event等。例如:名为 Java.applet的包中,所有类文件都存储在目录 classpathjavaapplet 下,这里classpath由环境变量来设定。,2
9、023/11/7,18,包机制的优点,易根据包中类的功能找到所需要的类,包中的类是相关的。每个包都是命名空间,不同包中类的名字不冲突。同一个包中的类之间有比较宽松的访问机制。包的定义与使用 定义用关键字 package 如:package graphics;说明:.package语句指定某类加入graphics包,并存放路径 为 classpathgraphics,2023/11/7,19,.如原文件中没有package语句,则指定为无名包,通常放在源文件的目录下。.package只能有一条,并在源程序的第一行。.一个类只能属于一个包.包名以“.”为分隔符,2023/11/7,20,使用包成员
10、,import 语句放在源程序的前面 如:import graphics.circle/引入包中的Circle类 import graphics.*/引入包中所有的类 如果没有用import语句引入包的类,则可用长名 引用类 格式:包名.类名 如:graphics.circle mycircle=new graphics.circle()通常没有必要这样做。,2023/11/7,21,包使用示例,例5.6定义二维几何图形的包并使用,2023/11/7,22,5.6访问控制,Java中有四中不同的访问权限 private-私有的 protected-受保护的 public-公开的 缺省(defa
11、ult),2023/11/7,23,5.7 内部类,内部类是在一个类的定义中定义的类,也称为嵌套类。内部类可作为外包类(包容类)的一个成员使用,可以访问外包类的所有成员(包括带有static、private的成员变量和方法)。例题5-8 内部类访问外包类成员(P139)例题5-9 内部类通过修饰符访问同名外包类成员(P140),2023/11/7,24,在外包类的语句块中定义内部类,内部类可以定义在一个方法体的语句块中定义,这时内部类可以访问语句块中的局部变量,但只限于在该语句块运行期内,当该方法运行结束后内部类对象将不能访问所在语句块中的局部变量。例题5-10,2023/11/7,25,在外
12、包类以外的其他类中访问内部类,对于可在外包类之外访问的内部类,引用内部类时必须使用完整的标识:外包名.内部类名 假设B 是A的内部类则有 A a=new A()A.B b=a.new B()例题5-11 在外包类之外访问内部类,2023/11/7,26,内部类的特点:内部类可以使用它所在类的静态成员变量、实例成员变量和方法中的局部变量。内部类的修饰符有abstract,private或protected。内部类可作为其他类的成员。,2023/11/7,27,5.8 其它 基本数据类型的包装类 集合类,2023/11/7,28,5.8.1 基本数据包装类,基本数据类型在java.lang包中都有
13、一个wrapper类。,2023/11/7,29,每个包装类中提供了有用的方法和常量,MIN_VALUE MAX_VALUE数据类型的转换 Integer wint=new Integer(18);int p=wint.intValue();int x=Integer.valueof(“123”).intValue();int y=Integer.parseInt(“123”);String s=(new Integer(125).toString();,2023/11/7,30,8.2集合类,集合包含一组对象。在这个对象中存放指向其他对象的引用,Java Collection API的核心接
14、口,2023/11/7,31,Collection,Collection Collection接口是集合接口的根,它定义了集合的通用API。JDK中没有提供该接口的实现类,而是提供了它的子接口。例如:SET和LISTSet set中的元素不能重复,是数学中集合的抽象List List是一个有序的集合,称为列表或序列。可以包含重复的元素,矢量Vector就是一种常用的List。,2023/11/7,32,Map Map实现键值到值的映射。Map中不能包含重复的键值,每个键值最多只能映射到一个值。Hashtable就是一个常用的Map。SortedSet 和SortedMap SortedSet
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 面向 对象 高级 特性

链接地址:https://www.31ppt.com/p-6510331.html