【发布时间】:2014-06-15 19:56:09
【问题描述】:
假设我有一个名为的抽象超类,其定义如下:
public abstract class Member implements Comparable<Member>
然后我有两个Member 的子类,定义如下:
public class Coach extends Member
public class Player extends Member
然后,我有一个Member 的列表,这意味着它同时包含Coach 和Player。
我需要对这个列表进行排序,其中教练总是排在第一位,然后是球员,按照识别号排序。
我需要实现compareTo 方法来执行此操作。但是我知道我无法在超类Member 中实现该方法,因为标识号是Player 的属性而Coach 没有它,我该如何继续?
我希望我已经清楚了这个问题。
【问题讨论】:
-
如您所说,在
Member上编写compareTo()方法来对子类 进行排序是不可能的。您正在尝试编写错误的设计。为了比较它们,您需要处理一个公共字段。 -
你想如何比较两位教练?
标签: java inheritance polymorphism compareto