【发布时间】:2017-01-19 07:00:09
【问题描述】:
我正在为一个数据结构项目实现一个各种各样的数据库,我很难将我的头脑围绕我需要做的逻辑。
我有一个抽象超类,名为Person,它有两个子类,名为Student 和Instructor。
最后,我有另一个名为UniversityPeople 的类,它在应用程序使用时创建对Student 和Instructor 对象数组的引用。当UniversityPeople 的构造函数被调用时,它使用大小作为参数创建一个指定对象的数组。我似乎无法思考如何在创建时区分构造函数中的两个对象。我的第一个想法是 2 个构造函数:
Instructor[] instArray;
Student[] stuArray;
public UniversityPeople(int size)
{
Student[] stuArray = new Student[size];
}
public UniversityPeople(int size)
{
Instructor[] instArray = new Instructor[size];
}
但经过思考(并阅读一些内容)后,我知道我无法做到这一点。
我的下一个想法是在UniversityPeople 构造函数中使用一种对象验证方法,但我很难实现一个。
基本上,该类需要知道何时创建Student 对象数组以及何时创建具有整数大小作为参数的Instructor 对象数组。
如果有人能指出我正确的方向,我将不胜感激。我最近大部分时间都在用 C 进行编码,所以在这么长时间之后,回到 OOP 感觉有点奇怪。谢谢!
【问题讨论】:
-
为什么不创建一个 Person 数组?
-
您可以在
UniversityPeople上创建静态工厂方法,与构造函数不同,它们可以通过名称相互区分。但我不太了解你的要求。为什么你的类会有两个数组作为成员,但只初始化一个? -
因为它是抽象的,如果我没记错的话,子类将无法访问它们的方法,只能访问抽象超类的方法。不过我可能是错的?
-
@JohnBollinger 我想我的想法是,如果应用程序用户不想输入教师数据,而是只为学生输入数据,他们可以,但我的方法可能会很差。
-
听起来像是泛型的用例。
UniversityGroup<T extends Person>,包含T的数组
标签: java object constructor