网络程序设计java泛型和枚举new

上传人:宝路 文档编号:48890041 上传时间:2018-07-21 格式:PPT 页数:20 大小:389.64KB
返回 下载 相关 举报
网络程序设计java泛型和枚举new_第1页
第1页 / 共20页
网络程序设计java泛型和枚举new_第2页
第2页 / 共20页
网络程序设计java泛型和枚举new_第3页
第3页 / 共20页
网络程序设计java泛型和枚举new_第4页
第4页 / 共20页
网络程序设计java泛型和枚举new_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《网络程序设计java泛型和枚举new》由会员分享,可在线阅读,更多相关《网络程序设计java泛型和枚举new(20页珍藏版)》请在金锄头文库上搜索。

1、*1网络程序设计 Network Programming 第五章 泛型和枚举赵建立 山东科技大学信息科学与工程学院 College of Information Science and Engineering , Shandong University of Science and T*2本章总体纲要 泛型 枚举泛型程序设计 泛型程序设计,简单地说就是使用模板的程序设计法。 将一些常用的数据结构(比如链表,数组,二叉树)和算法(比 如排序,查找)写成模板,以后则不论数据结构里放的是什么对 象,算法针对什么样的对象,则都不必重新实现数据结构,重新 编写算法。 标准模板库 (Standard Te

2、mplate Library) 就是一些常用数据 结构和算法的模板的集合。主要由 Alex Stepanov 开发,于 1998年被添加进C+标准 有了STL,不必再从头写大多的标准数据结构和算法,并 且可获得非常高的性能。模板引子1.假如设计一个求两参数最大值的函数,在实践中我们可能需要定 义四个函数: int max ( int a , int b ) return ( a b ) ? a , b ; long max ( long a , long b ) return ( a b ) ? a , b ; double max ( double a , double b ) return

3、 ( a b)? a , b ; char max ( char a , char b ) return ( a b ) ? a , b ;2.这些函数几乎相同,唯一的区别就是形参类型不同3.需要事先知道有哪些类型会使用这些函数,对于未知类型这些 函数不起作用模板的概念1. 所谓模板是一种使用无类型参数来产生一系列函数或类的机制。 2. 若一个程序的功能是对某种特定的数据类型进行处理,则可以将所处理的数据类型说明为参数,以便在其他数据类型的情况下使用,这就是模板的由来。 3. 模板是以一种完全通用的方法来设计函数或类而不必预先说明将被使用的每个对象的类型。 4. 通过模板可以产生类或函数的集合

4、,使它们操作不同的数据类型,从而避免需要为每一种数据类型产生一个单独的类或函数。 C+求最大值模板函数实现1.求两个数最大值,使用模板 template T max(T a , T b) return ( a b ) ? a , b; 2.template (模板函数形参表) /函数定义体 6模板优缺点 函数模板方法克服了C语言解决上述问题时 用大量不同函数名表示相似功能的坏习惯 克服了宏定义不能进行参数类型检查的弊 端 克服了C+函数重载用相同函数名字重写几 个函数的繁琐 缺点,调试比较困难 一般先写一个特殊版本的函数 运行正确后,改成模板函数7*8Java泛型定义格式 不带泛型的类 类修饰

5、词列表 class 类名 extends 父类名 implements 接口名称列表 类体 具有泛型特点的类 类修饰词列表 class 类名 extends 父类名 implements 接口名称列表 类体 *9泛型定义格式 不带泛型的接口 接口修饰词列表 interface 接口名 extends 接口名称列表 接口体 具有泛型特点的接口 接口修饰词列表 interface 接口名 extends 接口名称列表 接口体 *10类型参数的定义格式类修饰词列表 class 类名 extends 父类名 implements 接口名称列表第一种:类型变量标识符 Public class J_Add

6、 第二种:类型变量标识符 extends 父类型 Public class J_Add 第三种:类型变量标识符 extends 父类型1 / 方法mb_sum结束public static void main(String args )J_Add b = new J_Add( );Integer a1 = new Integer(1);Integer a2 = new Integer(2);Integer a3 = new Integer(3);System.out.println( b.mb_sum(a1, a2, a3) ); / 方法main结束 / 类J_Add结束*12示例【例5-2

7、】/ 泛型例程 对应第二种定义方式 interface J_Interface public int mb_sum(T a1, T a2, T a3); / 接口J_Interface结束public class J_AddInterface implements J_Interface public int mb_sum(T a1, T a2, T a3)int b1 = a1.intValue( );int b2 = a2.intValue( );int b3 = a3.intValue( );return(b1 + b2 + b3); / 方法mb_sum结束*13示例public st

8、atic void main(String args )J_AddInterface b= new J_AddInterface( );Integer a1 = new Integer(1);Integer a2 = new Integer(2);Integer a3 = new Integer(3);System.out.println( b.mb_sum(a1, a2, a3) ); / 方法main结束 / 类J_AddInterface结束*14示例【例5-3】J_Genericity/ 泛型例程 对应第三种定义方式*15本章总体纲要 泛型 枚举*16枚举的基本定义格式枚举类型修饰词列

9、表 enum 枚举类型标识符 枚举常量1, 枚举常量2, . ., 枚举常量n 修饰词为public时,枚举定义所在的文件名前缀与枚 举类型标示符指定的名称相同*17示例enum E_SEASON 春季, 夏季, 秋季, 冬季 / 枚举E_SEASON结束*18定义格式枚举类型标示符 枚举变量; 枚举类型标示符 枚举变量1,枚举变量n;注意:枚举类型不能通过new来创建实例,直接通过枚举类 型标示符访问枚举常量。例如:E_SEASON s = E_SEASON.春季枚举变量成员方法: 1、public String name() 2、public String toString()/返回枚举常

10、量对应的字符串 3、枚举类型标示符.values() 获得该枚举类型的所有枚举变量 *19示例【例5-4】/ J_Enum.java; / 枚举例程 enum E_SEASON 春季, 夏季, 秋季, 冬季 / 枚举E_SEASON结束public class J_Enum public static void main(String args )E_SEASON sa = E_SEASON.values( );for (int i=0; i sa.length; i+)*20示例switch(sai)case 春季:System.out.println(“春季花满天“);break;case 夏季:System.out.println(“夏季热无边“);break;case 秋季:System.out.println(“秋季果累累“);break;case 冬季:System.out.println(“冬季雪皑皑“);break; / switch结构结束 / for循环结束 / 方法main结束 / 类J_Enum结束

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

最新文档


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

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