泛型基本知识.ppt

上传人:大张伟 文档编号:11879996 上传时间:2021-10-10 格式:PPT 页数:28 大小:684.71KB
返回 下载 相关 举报
泛型基本知识.ppt_第1页
第1页 / 共28页
泛型基本知识.ppt_第2页
第2页 / 共28页
泛型基本知识.ppt_第3页
第3页 / 共28页
泛型基本知识.ppt_第4页
第4页 / 共28页
泛型基本知识.ppt_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《泛型基本知识.ppt》由会员分享,可在线阅读,更多相关《泛型基本知识.ppt(28页珍藏版)》请在三一文库上搜索。

1、数据结构(Java版 ) 北京信息科技大学 计算机学院 段瑞雪 1 2 泛型 3 1 public class GenericTest 2 public static void main(String args) 3 List list = new ArrayList(); 4 list.add(qqyumidi); 5 list.add(corn); 6 list.add(100); 7 8 for (int i = 0; i list.size(); i+) 9 String name = (String) list.get(i); / 1 10 System.out.println(na

2、me: + name); 11 12 13 http:/ Integer.parseInt(String) 程序实现源码 泛型 泛型,即“参数化类型”。顾名思义,就是将 类型由原来的具体的类型参数化,类似于方 法中的变量参数,此时类型也定义成参数形 式(可以称之为类型形参),然后在使用/调 用时传入具体的类型(类型实参)。 一般用T表示。 4 5 1 public class GenericTest2 2 3 public static void main(String args) 4 /* 5 List list = new ArrayList(); 6 list.add(qqyumidi)

3、; 7 list.add(corn); 8 list.add(100); 9 */ 10 11 List list = new ArrayList(); 12 list.add(qqyumidi); 13 list.add(corn); 14 /list.add(100); / 1 提示编译错误 15 16 for (int i = 0; i list.size(); i+) 17 String name = list.get(i); / 2 18 System.out.println(name: + name); 19 20 21 public class List Boolean add(

4、T key); T get(T key); T set(T key); . 6 自定义泛型接口、泛型类和泛型方法 7 public class Box private int t; public void set(int t) this.t = t; public int get() return t; 8 public class Box private float t; public void set(float t) this.t = t; public float get() return t; 9 public class Box private T t; public void s

5、et(T t) this.t = t; public T get() return t; 泛型类 10 public class Box private T t; public void set(T t) this.t = t; public T get() return t; public static void main(String args) Box integerBox = new Box(); Box stringBox = new Box(); integerBox.set(new Integer(10); stringBox.set(new String(菜鸟教程); Syst

6、em.out.printf(整型值为 :%dnn, integerBox.get(); System.out.printf(字符串为 :%sn, stringBox.get(); 为什么引入泛型的概念? 1. 类型检查。 2. 节省空间,一个泛型类,可以处理各种 数据类型的数据。 11 12 ADT Set 数据:集合中的数据元素,数据元素的数据类型为T 操作 boolean isEmpty(); int size(); T search(T key); boolean contains(T key); boolean add(T x); T remove(T key); void clear

7、(); boolean containsAll(Setset); boolean addAll(Setset); 13 接口 14 声明一个接口(最简单的情况) 15 接口的实际应 用 16 interface USB / 操作标标准 public void install() ; public void work() ; class Computer public void plugin(USB usb) usb.install() ; usb.work() ; class Phone implements USB public void install() System.out.print

8、ln(安装手机驱动驱动 程序。) ; public void work() System.out.println(手机与电脑进电脑进 行工作。) ; class Printer implements USB public void install() System.out.println(安装打印机驱动驱动 程序。) ; public void work() System.out.println(进进行文件打印。) ; class MP3 implements USB public void install() System.out.println(安装MP3驱动驱动 程序。) ; publi

9、c void work() System.out.println(进进行MP3拷贝贝。) ; public class TestDemo public static void main(String args) Computer c = new Computer() ; c.plugin(new Phone() ; c.plugin(new Printer() ; c.plugin(new MP3(); 为什么要引入接口的概念? 1. 减少重复定义。 2. 便于利用基类引用,处理各种类型的子 类,实现多态。 17 18 接口和泛型 19 public interface Set 泛型接口 pu

10、blic class SortSet implements Set Set set = new SortSet(); set.add(x) 泛型通配符 T 是类型参数,指定元素的数据类型,T的实 际参数类型是类,在声明和创建对象时指定。 “?” 是泛型通配符, “?extends T” 是指T及其任意一个子类。 “? super T” 是指T及其任意一个父类。 20 21 泛型中占位符 T和 ?有什么区别? https:/ 22 public class Teacher public String str; public int age; public int sex; public Teac

11、her(String str, int age,int sex) this.str = str; this.age = age; this.sex = sex; public class Student extends Teacher public Student(String str, int age,int sex) super(str,age,sex); public class Child extends Student public Child(String str, int age,int sex) super(str,age,sex); Teacher Student Child

12、 23 public static void test() ArrayList list1 = new ArrayList(); list1.add(new Student(zhangsan,18,0); list1.add(new Student(lisi,28,0); list1.add(new Student(wangwu,24,1); /这里如果add(new Teacher(.);就会报错, show1(list1); /这里我们并没有给List指定具体的数据类型, /可以存放多种类型数据 public static void show1(List list) for (Object

13、 object : list) System.out.println(object.toString(); 24 public static void test2() /这里我们并没有给List指定具体的数据类型, /可以存放多种类型数据 ArrayList list2 = new ArrayList(); list2.add(new Student(zhaoliu,22,1); list2.add(new Teacher(sunba,30,0); show2(list2); public static void show2(List list) for (Object object : li

14、st) System.out.println(object); 25 public static void test3() ArrayList list3 = new ArrayList(); list3.add(new Teacher(zhaoliu,22,1); list3.add(new Teacher(sunba,30,0); show3(list3); /这里我们并没有给List指定具体的数据类型, /可以存放多种类型数据 public static void show3(List list) for (Object object : list) System.out.println

15、(object); 26 public static void test3() /这里我们并没有给List指定具体的数据类型, /可以存放多种类型数据 ArrayList list4 = new ArrayList(); list4.add(new Student(sunba,30,0); list4.add(new Teacher(zhaoliu,22,1); show4(list4); public static void show4(List list) for (Object object : list) System.out.println(object); 27 public st

16、atic void test3() ArrayList list5 = new ArrayList(); list5.add(new Child(zhangsan, 15,1); list5.add(new Child(sunba,30,0); list5.add(new Child(zhaoliu,22,1); show3(list5); ArrayList list6 = new ArrayList(); list6.add(new Child(zhangsan,15,1); list6.add(new Student(sunba,30,1); list6.add(new Teacher(zhaolu,20,1); show4(list6); /我们接收的是Student及其父类对象数据类型, /因为我们的Child是继承Student的, public static void show4(List list) for (Object object : list) System.out.println(object); 小结 本章介绍了 泛型 泛型和通配符的区别 接口 泛型类,泛型方法,泛型接口 接口和泛型 28

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1