本帖最后由 代臣 于 2012-3-20 11:40 编辑
/*
Student继承Person之后,Student类中又重写了Person类中的getName方法,而且重写的内容是一样的。
只是做了这点改变,输出结果却是
null123
null123
null123
如果不复写,结果是
abc---1123
abc---2123
abc---4123
请知道的解释下,谢谢!
*/- import java.util.*;
- class GenericDemo8
- {
- public static void main(String[] args)
- {
- ArrayList<Person> al = new ArrayList<Person>();
- al.add(new Person("abc1"));
- al.add(new Person("abc2"));
- al.add(new Person("abc4"));
- //printColl(al);
- ArrayList<Student> all = new ArrayList<Student>();
- all.add(new Student("abc---1"));
- all.add(new Student("abc---2"));
- all.add(new Student("abc---4"));
- printColl(all);
- }
- public static void printColl(ArrayList<? extends Person> al)
- {
- for(Iterator<? extends Person> it = al.iterator(); it.hasNext(); )
- {
- sop(it.next().getName());
- }
- }
- public static void sop(Object obj)
- {
- System.out.println(obj);
- }
- }
- class Person
- {
- private String name;
- Person(String name)
- {
- this.name = name;
- }
- public String getName()
- {
- return name;
- }
- }
- class Student extends Person
- {
- private String name;
- Student(String name)
- {
- super(name);
- }
- public String getName()
- {
- return name;
- }
- }
复制代码 |