Java 类中的子类的列表
这里的背景是一个图书馆系统的学校项目,图书馆有杂志和书籍 我们有一个抽象类Java 类中的子类的列表,java,oop,Java,Oop,这里的背景是一个图书馆系统的学校项目,图书馆有杂志和书籍 我们有一个抽象类Register,它由Book和Magazine扩展。现在需要实现一个Copy类,该类可用于书籍和杂志,其中包含归还日期、所有者、yadda-yadda 现在这对我们来说已经变得非常混乱,Copy应该扩展到Book或Magazine,而这两个版本中必须有一个副本的数组列表 我很抱歉在这个问题上没有特别说明,但我们在其超类中实现子类列表的问题上完全陷入了困境和困惑。根据您的描述,似乎Copy类不应该扩展这些类中的任何一个,而
Register
,它由Book
和Magazine
扩展。现在需要实现一个Copy
类,该类可用于书籍和杂志,其中包含归还日期、所有者、yadda-yadda
现在这对我们来说已经变得非常混乱,Copy
应该扩展到Book
或Magazine
,而这两个版本中必须有一个副本的数组列表
我很抱歉在这个问题上没有特别说明,但我们在其超类中实现子类列表的问题上完全陷入了困境和困惑。根据您的描述,似乎
Copy
类不应该扩展这些类中的任何一个,而是与Register
有关联,如下所示:
public class Copy {
Register original;
Register copy;
}
public class Book {
List<Copy<Book>> copies;
}
通过这种方式,您可以知道原始的寄存器
实例及其副本。上述设计的问题在于,您可以拥有一本书籍
类型的原件和一份杂志
类型的副本,或者反之亦然。要解决此问题,可以使用泛型:
public class Copy<T extends Register> {
T original;
T copy;
}
复制类是用于实体复制的,一本书/杂志类可能没有副本,书/杂志包含标题、流派等,它只是一个条目寄存器。而且,我从未见过“@Mojimi第一句话,这个设计支持它。第二条评论,它被称为泛型,正如回答中所描述的:你可以使用泛型。很抱歉把这个带回来,我只是不明白你为什么要放两个寄存器,原始和复制,但我现在明白你做了什么,尽管我不确定我是否被允许使用泛型,因为我们还没有被教过。所以我想简单地解析Book或Magazine作为复制构造函数的参数?所以我只是在构造函数上使用泛型,这更容易解释