本帖最后由 jacoblx 于 2014-11-1 06:31 编辑
假设一个父类Person,一个子类Student,两者可以拥有不同的自然排序方法compareTo吗?比如Person类按姓名排序,Student类按成绩排序。
如果可以的话,子类如何实现compareTo方法?需要再次实现Comparable接口吗?泛型怎么写?
先谢过了
例如
public class Person implements Comparable<Person>{ private String name; private int age; public Person(String name, int age) { super(); this.name = name; this.age = age; } @Override public int compareTo(Persono) { int margin = this.name.compareTo(o.name); return margin == 0 ? this.age - o.age : margin; } } public class Student extends Person /*这里需要再次实现Comparable接口吗?*/{ private int mark; public Student(String name, int age, int mark) { super(name, age); this.mark = mark; } //这里没办法覆盖父类的comparaTo方法,因为参数类型不一样 public int compareTo(Studento) { int margin = this.mark - o.mark; return margin == 0 ? super.compareTo((Person)o): margin; } } |