A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 noiary 于 2014-10-9 21:41 编辑

突然地不确定List<Person>集合通过add方法装入Person对象后还能不能装入Person的子类
所以写个代码求证一下

发来分享
  1. /**
  2. * 测试List集合指定Person类型之后是否可以装入子类Employee
  3. *         或者装入Employee对象后是否可以装入父类Person
  4. */
  5. package day17_Collections;

  6. import java.util.ArrayList;
  7. import java.util.List;

  8. /**
  9. * @author Administrator
  10. *
  11. */
  12. public class Test {

  13.         /**
  14.          * @param args
  15.          */
  16.         public static void main(String[] args) {
  17.                 // TODO Auto-generated method stub
  18.                 GenericTest1();
  19.         }
  20.        
  21.         /*
  22.          * 泛型定义Person类型后装入子类Employee测试
  23.          */
  24.         public static void GenericTest1() {
  25.                 List<Person> list = new ArrayList<Person>();
  26.                 list.add(new Person("郭敬明", 35));
  27.                 list.add(new Person("張小莉", 28));
  28.                 list.add(new Person("習大大", 55));
  29.                 list.add(new Employee("杜海涛", 32, "12345"));
  30.                 for (Person p : list) {
  31.                         System.out.println(p);
  32.                 }
  33.         }
  34.        
  35.         /*
  36.          * 泛型定义Employee类型后装入子类Person测试
  37.          * 无法通过 orz
  38.          
  39.         public static void GenericTest2() {
  40.                 List<Employee> list = new ArrayList<Employee>();
  41.                 list.add(new Person("郭敬明", 35));
  42.                 list.add(new Person("張小莉", 28));
  43.                 list.add(new Person("習大大", 55));
  44.                 list.add(new Employee("杜海涛", 32, "12345"));
  45.                 for (Person p : list) {
  46.                         System.out.println(p);
  47.                 }
  48.         }
  49.         */
  50. }

  51. class Person {

  52.         private String name;
  53.         private int age;

  54.         Person(String name, int age) {
  55.                 this.name = name;
  56.                 this.age = age;
  57.         }

  58.         public String getName() {
  59.                 return name;
  60.         }

  61.         public int getAge() {
  62.                 return age;
  63.         }

  64.         public String toString() {
  65.                 return this.getClass().getName() + "  姓名:" + name + "|年龄:" + age;
  66.         }
  67. }

  68. class Employee extends Person {
  69.         private String id;

  70.         Employee(String name, int age, String id) {
  71.                 super(name, age);
  72.                 this.id = id;
  73.         }

  74.         public String toString() {
  75.                 return this.getClass().getName() + "  姓名:" + super.getName() + "|年龄:"
  76.                                 + super.getAge() + "|学号:" + id;
  77.         }
  78. }
复制代码




评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

5 个回复

倒序浏览
打印结果
day17_Collections.Person  姓名:郭敬明|年龄:35
day17_Collections.Person  姓名:張小莉|年龄:28
day17_Collections.Person  姓名:習大大|年龄:55
day17_Collections.Employee  姓名:杜海涛|年龄:32|学号:12345


瞬间赶脚泛型甚是强大!
回复 使用道具 举报
面向对象甚是强大

点评

感谢技术分~!  发表于 2014-10-11 09:27
回复 使用道具 举报
来学习一下,,,楼主这对象创建的实在是屌

点评

嘿~  发表于 2014-10-11 09:28
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马