《枚举和泛型》ppt课件

上传人:xiao****1972 文档编号:74157130 上传时间:2019-01-27 格式:PPT 页数:18 大小:2.83MB
返回 下载 相关 举报
《枚举和泛型》ppt课件_第1页
第1页 / 共18页
《枚举和泛型》ppt课件_第2页
第2页 / 共18页
《枚举和泛型》ppt课件_第3页
第3页 / 共18页
《枚举和泛型》ppt课件_第4页
第4页 / 共18页
《枚举和泛型》ppt课件_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《《枚举和泛型》ppt课件》由会员分享,可在线阅读,更多相关《《枚举和泛型》ppt课件(18页珍藏版)》请在金锄头文库上搜索。

1、枚举与泛型,1,本节主要内容,枚举的概念和特点 枚举的定义和使用 泛型的概念 泛型的定义和使用 泛型类、泛型方法、泛型接口,2,学习目标,理解枚举 掌握枚举的定义及使用 理解泛型的概念 掌握泛型的使用,3,枚举类,概念 简单枚举类定义和使用 操作枚举类的常用方法 复杂枚举类(添加成员变量、构造方法、成员方法)的定义和使用,4,枚举的概念,枚举 是一种数据类型,表示一些特定的数据,这些数据只接收分配时预先定义的值集合中的值 日常生活中枚举的例子:星期、季节、月份等 本质是类的一种特殊形式,在定义枚举类型时,类型中所描述的枚举常量都是作为同一个类的实例生成的 这个类是以java.lang包中的En

2、um类为超类,对应于每个枚举常量的对象在其成员域中存储了枚举常量的名称,并继承了Enum类的toString方法 类Enum的toString方法返回枚举常量的原始名称,5,枚举的定义,枚举使用关键字enum定义,例: enum Season SPRING,SUMMER,AUTUMN,WINTER 说明: 定义了一个新的类型Season,用Season定义的变量只能存储大括号中指定的某一个值 大括号中的SPRING等称为枚举常量,一般为大写字母描述 定义结尾无分号,大括号后无分号 枚举定义语句不能放在方法内部(包括main()方法),可以以一个独立的*.java源文件存放,编译后会生成*.cl

3、ass文件 一个枚举中包含的值的多少可以根据需要而定,6,枚举的使用,枚举类型定义后就可以用来定义变量了,例: Season s1=Season.SUMMER; 说明: 定义了Season类型的变量s1,并用SUMMER值对其进行了初始化 枚举变量只能赋这个枚举中定义的枚举常量值,并且常量值必须通过枚举变量引用,否则编译器报错 枚举变量和枚举常量值之间可以用“=”进行比较 可以在switch语句中使用枚举值 输出枚举值 System.out.println(s1); /输出SUMMER,7,枚举类,使用enum定义枚举类型时,实际上所定义出的类型是继承自java.lang.Enum类,枚举的成

4、员就是一个枚举类型的实例 枚举成员都默认是public、final、static,无法改变名称所设定的值,可以通过类名直接使用 可以调用相关方法: equals() /比较两个枚举对象的内容是否相等 toString() /取得枚举值的字符串描述 values() /取得所有的枚举成员实例,以数组方式返回 valueOf(String name)/ 返回带有指定名称的该类型的枚举常量。 compareTo() /比较枚举对象在枚举时的顺序,8,在枚举类中添加成员,定义枚举类时可以定义成员变量、构造方法、成员方法 若添加了方法后,则在列举枚举常量后要加分号 不可以用new来创建枚举类的对象 示例

5、: public enum Season SPRING(“1-3”),SUMMER(“4-6”),AUTUMN(“7-9”),WINTER(“10-12”); String month; Season(String m) month=m; Void printMonth() System.out.println(month); public void printSeason() ,9,练习,定义一个表示衬衫尺寸的枚举类JacketSize,描述small-extralarge号,定义一个表示衬衫颜色的枚举类JacketColor,描述五种颜色 定义Jacket类,包括尺寸和颜色两个属性,定义构

6、造方法,重写toString()方法显示衬衫信息 定义测试类TestJacket 显示JacketSize和JacketColor的枚举常量值 用数组描述几件衬衫,并输出衬衫的信息, 在枚举JacketSize中重写toString()方法,对尺寸进行转换,如:small-s,并在测试类中进行测试,10,泛型的概念,为什么要用泛型?JDK 1.4以前,装入集合的数据当作Object对待,失去自己的实际类型,从集合中取出时需要转型,效率低,容易产生错误。 解决办法:在定义集合的同时定义集合中对象的类型,好处:增强程序的可读性和稳定性 泛型又称为参数化类型(parameterized type),

7、它在类、接口或方法的定义中使用类型作参数表示某种数据,在所有对这个数据执行操作的地方都用类型代替这种数据,泛型能自动的处理传递给类型变量的数据类型 泛型可以将自身装扮成所表示的类的集合中任何具体的类,只需为泛型中的类型参数提供适当的类型实参,即可以表现出对应的类的行为 示例:examples.DonotUseGeneric.java examples.UseGeneric.java,11,泛型类的使用,定义泛型类的变量时必须用具体的类名代替类型参数 List l=new ArrayList(); 说明: 创建对象时出现在类定义中的类型变量将被String代替 指定String类型后,Array

8、List集合中只能存放String类型的对象 也可以在创建对象时指定具体的类型,但必须跟引用保持一致 ArrayList l=new ArrayList(); 类型实参只能是类或接口,不能使用基本数据类型(如int、double),可以是基本类型包装类,如Integer等 见示例 examples.Generic1.java,12,泛型类的定义,定义格式: class 类名类体 如:class Box 说明: 中的类型参数一般用单个大写字母表示,经常使用的有:E、K、N、T、V等 类型变量名可以在泛型类内部的任何地方使用,它只是一个占位符,没有具体意义 可以用T作为类型代表来声明成员变量、方法

9、参数或返回值类型 在创建对象时,必须指定具体的类型变量名,若不指定,则默认使用Object类型 定义泛型类在使用时多了一层安全性,可以防止异常的发生 示例:教材P295 例10 示例:examples.Generic2.java & TestGeneric2.java,13,有多个类型变量的泛型,泛型中的类型变量可以有多个,中的类型变量名之间用逗号分隔 java.util包中的Map接口, HashMap类等 示例: examples.TestTwoGeneric.java,14,泛型小结,泛型本质是参数化类型,即操作的数据类型可以被定义为一个参数 引入泛型的好处:在编译时检查类型安全,并且所

10、有的强制转换都是自动和隐式的,提高代码的重用率,简单。 泛型使用的规则: 泛型的类型参数只能是类类型 同一泛型可以有多个版本,但不同版本的实例不兼容 泛型的类型参数可以有多个 泛型的参数类型可以使用extends语句,例如。 泛型的参数类型还可以是通配符类型。例如Class classType = Class.forName(java.lang.String);,15,附加 Enumication接口,Enumeration接口 定义了从一个数据结构得到连续数据的手段 实现遍历,非常重要 常用方法 hasMoreElements() 还有没有元素 nextElement() 取出一个元素,16

11、,/e is an object that implements the Enumeration interface while (e.hasMoreElements() Object o= e.nextElement(); System.out.println(o); ,练习,把集合类中介绍的例子,转换为使用泛型,理解泛型的优点 自己定义一个泛型类,了解泛型类的定义 有兴趣的同学了解泛型接口和泛型方法的定义和使用,17,总结,枚举 枚举定义为 enum 枚举类名枚举常量 枚举引用方式是: 枚举类名.AAAA /类似静态变量 枚举变量只能赋枚举中定义的常量值 枚举值可以用来控制switch语句。 枚举的构造函数不能有修饰词 不能用new来声明一个枚举“实例” 枚举自动继承java.lang.Enum类型 泛型 参数化类型,操作的数据类型被指定为某种类型参数 安全简单 泛型使用的规则: 泛型的类型参数只能是类类型 同一泛型可以有多个版本,但不同版本的实例不兼容 泛型的类型参数可以有多个 泛型的参数类型可以使用extends语句,例如。 泛型的参数类型还可以是通配符类型。例如Class classType = Class.forName(java.lang.String);,18,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

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