Представьте, что я создал два связанных класса (Building и Person). В здании могут разместиться n человек (человек), и человек может находиться в здании одновременно.
Код (только соответствующая его часть) пока что:
public class Building {
//some attributes like name, location...
private List<Person> person;
//constructor
//some methods
}
public class Person {
//some attributes like name, age...
private Building building;
//constructor
//some methods
}
Хорошо, теперь мне нужно получить более подробную информацию о Person, поэтому я расширяю этот класс на два других (Doctors и Parents), у которых есть свои собственные методы, некоторые из которых специфичны для каждого класса.
Код:
public class Parent extends Person {
// some specific attributs
public boolean born;
//constructor
//some methods
public void setChildBorn() {
this.born = true;
}
}
public class Doctor extends Person {
// some specific attributs
// constructor
// some methods
public void maternityWard() {
//HERE THE QUESTION
}
}
Итак, как только я прибыл сюда, из метода maternityWard
мне нужно было бы:
- Итерировать по массиву Person-ListArray здания, где находится Доктор (это нормально, есть способ получить их).
- Для тех объектов в ListArray, которые являются экземпляром Parent (я могу использовать instanceof Parent, поэтому здесь нет смысла), вызовите метод
setChildBorn()
.
Краткая схема будет такой:
Building < association > Person
/ extends \
Doctor Parent
И, наконец, вопрос: можно ли вызвать эксклюзивный метод в подклассе из другого подкласса? Если да, то каким будет этот код? Если это возможно, я считаю, что здесь есть кастинг, но я не уверен, как это сделать.
Заранее спасибо за вашу помощь.