Я реализую базу данных для проекта структур данных, и мне очень тяжело обволакивать логику того, что мне нужно делать.Использование конструктора классов для создания массивов объектов из двух разных типов
У меня есть абстрактный суперкласс, называемый 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, поэтому возвращение в ООП стало немного странным после стольких времен. Благодаря!
Почему бы не создать массив Person? –
Вы можете создавать статические заводские методы на «UniversityPeople», которые, в отличие от конструкторов, можно отличить друг от друга по имени. Но я не очень хорошо понимаю ваши требования. Почему ваш класс должен иметь два массива в качестве членов, но только инициализировать их? –
, потому что его абстрактно, и если я правильно помню, подклассы не имели бы доступа к их методам, а только к абстрактным суперклассам. Возможно, я ошибаюсь? – FuegoJohnson