У меня 3 класса, человек, ученик и учитель. Студент и Учитель расширяют Личность. Как я могу получить доступ к переменным экземпляра из Person? Как если бы у Студента и Учителя был внутренний список имен, как я могу получить доступ к обоим массивам имен из родительского класса?Как получить доступ к дочерним переменным из родительского класса?
class Person
{
private String name;
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
public void printAllNames() { //<-- How do you do this?
for(Student s : students) //can't access students array
System.out.println(s.getName());
for(Teacher t : teachers)
System.out.println(t.getName());
}
}
class Student extends Person
{
protected Student[] students;
Student(String name)
{
this.name = name;
students[students.length] = this;
}
}
class Teacher extends Person
{
protected Teacher[] teachers;
Teacher(String name)
{
this.name = name;
teacher[teachers.length] = this;
}
}
хм я вижу. Как насчет идеи статического массива студентов в каждом ученике? Хорошо, все еще плохой дизайн, как вы сказали, потому что каждый студент должен знать о других учениках. – penu
У вас может быть константа 'Students.ALL', но я бы предпочел просто создать и зарегистрировать студентов в каком-то классе регистрации (возможно, в разделе« Школа »). Вы должны смоделировать школьный мир, поэтому рекомендации в * домене * в реальном мире обычно являются лучшим способом создания дизайна. Позже вы автоматически получите зуд, если дизайн не правильно моделирует домен :) –
Это зависит от того, что вы пытаетесь сделать, если «Students.ALL» - хорошая идея; речь идет об уровнях абстракции. У вас может быть менее сложный дизайн для небольших проблем.Вы не должны заходить за борт и включать напольные плитки в дизайн: P –