Java程序设计(第3版) 课件 -第五部分 特性总结.pptx

Java程序设计(第3版) 课件 -第五部分 特性总结.pptx

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

;第22章泛型;泛型与继承

承是面向对象的基本特征,然而在使用泛型时,非常容易错误地使用继承。本节将具体介绍泛型中的继承。Object类是所有类的父类,所以下面的代码是正确的:;通配符

什么是各种Collection类的父类呢?它写为Collection?(读为collectionofunknown),元素类型可以匹配任何类型,“?”被称为通配符。如以下代码:

上述代码中的printCollection方法的参数是Collection?,即所有类型的Collection对象。这种用法的“?”是没有任何限制的,表示任何类型。而很多时候,可能会使用有限制的通配符。如以下代码:

其中test方法的参数是List?extendsShape类型,通配符“?”被限制为Shape的子类类型。由于Circle类和Rectangle类是Shape类的子类,所以Test方法可以接收ListCircle和ListRectangle类型的对象。;泛型方法

可以在类中包含参数化方法,即泛型方法,而泛型方法所在的类可以是泛型类,也可以不是泛型类。泛型方法能够独立于类而产生变化。要定义泛型方法,只要将泛型参数列表置于返回值之前即可。如以下代码:

上述代码中的类并不是泛型类,但其中的getX方法是一个泛型方法,在方法声明时指定了泛型类型列表,该方法可以独立于类而变化。在使用getX方法时,可以指定类型参数E的具体类型,上述代码中分别使用了String和Integer类型。运行结果如下:;枚举概述

为了能更好地理解枚举的概念,本节将使用简单例子,说明为什么要使用枚举。

实际应用中,往往需要使用一些静态常量值,例如,某应用中的学生对象有一个“等级”属性,等级有且仅有3个值:“A”“B”“C”,可以使用一个类来定义这3个静态常量。;Enum类

枚举类型的本质是一个Java类,编译将生成class文件。JavaAPI中有一个Enum类,所有枚举类型都继承了该类,该类继承了Object类,同时实现了Comparable接口。因此所有的enum值都可以使用Enum类、Object类及Comparable接口中的方法。如以下代码:

上述代码中使用的compareTo、toString、ordinal方法都是Enum类中的方法,可以使用枚举值进行调用。其中,compareTo方法对枚举值进行比较,toString方法将枚举值??换成字符串,ordinal方法取出枚举值的顺序号。运行结果如下:;遍历Enum的值

实际使用中,往往需要遍历枚举中的值。任何枚举对象都可以通过枚举名称调用values方法,返回一个枚举类型的数组,进而使用增强for循环遍历Enum的值。如以下代码:

上述代码中使用枚举Orientation调用values方法,返回一个Orientation类型的数组,该数组中包含了枚举Orientation中所有的值。进一步使用增强for循环就可以遍历这个数组,达到遍历枚举的目的。;Enum的细节问题

1.Enum中的构造方法、属性、方法

Enum中可以声明属性,也可以声明构造方法,但是构造方法的权限必须是私有的,即Enum的构造方法不能在其他类中调用。声明构造方法后,枚举常量的声明就必须调用对应的构造方法。另外,枚举本质上也是一个Java类,所以在Enum中也可以像在Java类中那样声明方法。

2.在switch中使用Enum

switch语句中的变量类型可以为byte、short、int、enum。;增强for循环

增强for循环是用来迭代数组和集合对象的方法。同时依然可以使用传统的for循环迭代数组和集合,但是增强for循环使代码更为简单。语法如下:;自动装箱、自动拆箱

Java语言中有8种基本数据类型:byte、short、int、long、float、double、char、boolean。另外有8种引用类型与之对应:Byte、Short、Integer、Long、Float、Double、Character、Boolean。这8种引用类型统称为Wrapper类型。将基本数据类型转换为Wrapper类型,称为装箱;将Wrapper类型转换为基本数据类型,称为拆箱。传统装箱、传统拆箱方式如以下代码:

自动装箱和自动拆箱是用来对Wrapper类型和基本数据类型进行自动转换的方法。如以下代码:

可见,自动装箱和自动拆箱可以直接对Wrapper类型进行数学运算。如以下代码:

虽然使用自动装箱、自动拆箱的特性可以将Wrapper类型当成基本数据类型直接使用,但是实质上依然是先将Wrapper类型转换成了基本数据类型。因此,自动装箱、自动拆箱应该在必须使用时才使用,不能盲目使用,否则可能会降低效率。;静态导入

当Java类使用不同包的类时,可以使用i

文档评论(0)

xiaobao + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档