Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 类中的子类的列表_Java_Oop - Fatal编程技术网

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作为复制构造函数的参数?所以我只是在构造函数上使用泛型,这更容易解释