| 
 
| 本帖最后由 我为你着迷 于 2014-12-28 14:41 编辑 
 import java.util.*;
 class GenericDemo7
 {
 public static void main(String[] args)
 {
 TreeSet<Student> ts=new TreeSet<Student>(new Comp());
 
 ts.add(new Student("abc03"));
 ts.add(new Student("abc02"));
 ts.add(new Student("abc06"));
 ts.add(new Student("abc01"));
 
 Iterator<Student> it=ts.iterator();
 while(it.hasNext())
 {
 System.out.println(it.next().getName());
 }
 
 
 TreeSet<Worker> ts1=new TreeSet<Worker>(new Comp());
 
 ts1.add(new Worker("abc--03"));
 ts1.add(new Worker("abc--02"));
 ts1.add(new Worker("abc--06"));
 ts1.add(new Worker("abc--01"));
 
 Iterator<Worker> it1=ts1.iterator();
 while(it1.hasNext())
 {
 System.out.println(it1.next().getName());
 }
 }
 }
 
 class Comp implements Comparator<Person>
 {
 public int compare(Person p1,Person p2)
 {
 return p2.getName().compareTo(p1.getName());
 }
 }
 
 class Person
 {
 private String name;
 Person(String name)
 {
 this.name=name;
 }
 
 public String getName()
 {
 return name;
 }
 
 public String toString()
 {
 return "person:"+name;
 }
 }
 
 class Student extends Person
 {
 Student(String name)
 {
 super(name);
 }
 }
 
 class Worker extends Person
 {
 Worker(String name)
 {
 super(name);
 }
 }
 
 大家好,这句话里边的getName()不太懂 System.out.println(it.next().getName()); 为什么it.next()可以调用getName()方法呢?他们之间存在着调用关系吗?
 还有我想问下是不是父类定义好了功能子类可以直接拿过来用,所以你在new Student("abc03")
 的时候可以直接用父类的功能而不需要覆盖呢?
 如果不加getName()方法的话。
 打印结果是
 Person:afw01
 Person:afw03
 Person:afw05
 Person:afw06
 前边为啥带个Person:呢。
 如果加上了就没有了,这是为啥呀 ,想不明白。有很多疑问
 哪位大神或者版主能帮我解答一下啊  谢谢了 黑马币尽情奉上啊。
 
 
 
 | 
 |