这里的背景是图书馆系统的学校项目,图书馆有杂志和书籍。
我们有一个抽象类Register
,它由Book
和Magazine
扩展。现在需要实现一个Copy
类,可以用于书籍和杂志,其中包含返回日期,所有者,yadda yadda。
现在这对我们来说非常混乱,Copy
应该扩展Book
或Magazine
,这两个必须在其中包含副本的ArrayList。
我很抱歉问题中缺乏预期,但我们对在其超类中实现子类列表的问题感到困惑和困惑。
答案 0 :(得分:2)
根据您的描述,似乎Copy
类不应扩展任何这些类,而是与Register
建立关联,如下所示:
public class Copy {
Register original;
Register copy;
}
通过这种方式,您可以了解原始Register
实例及其副本。上述设计的问题在于您可以拥有类型为Book
的原件和类型为Magazine
的副本,或者反之亦然。要解决此问题,您可以使用泛型:
public class Copy<T extends Register> {
T original;
T copy;
}
然后,在Book
课程中,您可能会遇到以下情况:
public class Book {
List<Copy<Book>> copies;
}