Java实用程序设计(西电版)第4章Java高级特性

Java实用程序设计(西电版)第4章Java高级特性

ID:41233133

大小:2.40 MB

页数:68页

时间:2019-08-20

Java实用程序设计(西电版)第4章Java高级特性_第1页
Java实用程序设计(西电版)第4章Java高级特性_第2页
Java实用程序设计(西电版)第4章Java高级特性_第3页
Java实用程序设计(西电版)第4章Java高级特性_第4页
Java实用程序设计(西电版)第4章Java高级特性_第5页
资源描述:

《Java实用程序设计(西电版)第4章Java高级特性》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第4章Java高级特性4.1静态变量、方法与初始化程序块4.2final关键字与常量4.3抽象类与接口4.4枚举类型4.5内部类4.1静态变量、方法与初始化程序块有些情况下,一方面,我们可能希望为某一个成员变 量分配单一的存储空间,而不需要考虑到底要创建多少个 对象,甚至不需要创建任何对象。另一方面,我们可能还希望某个方法不跟任何对象实例相关联,不需要任何对象实 例也能调用这个方法。通过static关键字可以实现这两方面 的需求。1.静态变量静态变量指的是在类的成员变量声明中带有static关键字的变量。对于一个类,无论创建

2、出多少个该类的实例对象,静态变量都只占用一份存储区域,这份存储区域在虚拟机的方法区内(详见附录2)。static关键字不能应用于局部变量,只能应用于成员变量。2.静态方法静态方法指的是在类的成员方法声明中带有static关键字的方法。在第3.3节对this关键字的介绍中已经指出,在实例成员方法的内部存在一个表示“调用方法的那个对象”的引用。这个引用在方法内部由this关键字代表,而且它在静态方法中不存在。因此,我们也就能理解静态方法的特点,静态方法就是没有this引用的方法。3.静态初始化程序块在类定义中,不属于任何方法体且

3、以static关键字修饰的语句块称为静态语句块。由于静态语句块中的语句常用来对静态变量进行初始化,因而又称为静态初始化程序块。4.静态数据的初始化对静态成员变量进行正确的初始化是类装载器体系结构(附录2)基本功能的一部分。从程序设计的角度,我们需要知道,对一个类的静态成员的显式初始化,以及该类的所有静态初始化程序块都是在Java虚拟机装载这个类的时候执行的。当一个类的字节码被从.class文件中装载到Java虚拟机中(通常在虚拟机的方法区中)时,静态成员变量的存储空间就已经被开辟,这些初始化动作随之完成,静态成员的初始化也就

4、完成了。5.静态方法的重写从重写规则上讲,Java语言要求子类不能把父类的静态方法重写为非静态,也不能把父类的非静态方法重写为静态,但子类可以定义与父类静态方法的声明相同的方法,如例4-6的mtd2()。4.2final关键字与常量final关键字是Java中的常用关键字,用来表示类不能被继承、变量的值不能更改、成员方法不能被重写。1.在成员方法声明中使用final在成员方法的声明中使用final关键字,目的是禁止任何子类重写这个方法,这样,在继承的过程中,该方法的行为就不会改变。2.在类声明中使用final当在类声明中使用

5、final关键字时,表明不允许任何其他类继承该类。由于final的类不允许被继承,因而该类的方法也就无法被重写(继承是重写的前提),因此,final类中的所有方法实际上都被隐含指定为final的。3.在变量和方法参数中使用final当一个成员变量或局部变量被声明为final的,那么变量一旦被赋值就不能改变。对于基本类型的final变量,变量值不能改变。对于引用类型的final变量,一旦引用被初始化指向一个对象实例,就无法再让它指向另一个对象实例。但是,对象实例所包含的内容却是可以更改的,Java也没有提供任何使得对象实例作为

6、整体恒定不变的途径。对于数组类型的final变量,效果与引用类型的变量类似。4.3抽象类与接口接口提供了一种将“做什么”与“怎么做”分离的手段。抽象类可以认为是介于普通的类与接口之间的一种中间状态。1.抽象类在图3-1(b)所示的例子中,创建“形状”类型的目的可能不是使用它的行为,而是为它的所有子类创建一个统一的接口。不同子类可以用不同的方式表示此接口,这一接口表示了所有子类的共同部分和共通特征。所谓抽象方法,指的是只有方法声明而没有方法体的方法。抽象方法在声明时必须加上关键字abstract,例如:abstractvoid

7、f();2.接口接口的直觉含义是:所有实现了接口的类的行为都像接口所指定的那样。因此,任何使用某个特定接口的代码都知道应该调用该接口的哪些方法,而且也只需要知道这些即可。可以说,接口代表了使用类的客户代码与提供服务的类之间的协议。接口规定了类的行为的基本形式,而不涉及具体的实现细节。实现一个接口的类将具有接口所规定的行为。创建一个接口需要使用Interface关键字。接口的一般形式如下:   [public]interface接口名[extends父接口列表]{接口体}接口体可以包含常量定义和方法定义两部分。常量定义形如:

8、    类型常量名=常量值;   接口体中的方法定义形如:     返回类型方法名([参数列表]);在接口定义后,可能需要在某些情况下对接口进行扩展,即增加新的常量定义和方法声明,例如,向例4-11的Shape1中加入move()方法:interfaceShape1{voiddraw()

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。