本帖最后由 我为你着迷 于 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:呢。
如果加上了就没有了,这是为啥呀 ,想不明白。有很多疑问
哪位大神或者版主能帮我解答一下啊 谢谢了 黑马币尽情奉上啊。
|
|