Так прямо сейчас у меня есть Preprocessor
класса, который генерирует пучок переменных карт, например, и Service
класса, который имеет метод setPreprocessor(Preprocessor x)
, так что экземпляр Service
класса способен для доступа к картам, которые генерировал препроцессор.Доступ к переменному экземпляру родительского класса из экземпляров класса детей
На данный момент класс Service
должен звонить по три метода подряд; для простоты, назовем их executePhaseOne
, executePhaseTwo
и executePhaseThree
. Каждый из этих трех методов создает экземпляры экземпляра/изменения Service
, некоторые из которых являются указателями на объект Service
экземпляра Preprocessor
.
Мой код имеет такую структуру прямо сейчас:
Preprocessor preprocessor = new Preprocessor();
preprocessor.preprocess();
Service service = new Service();
service.setPreprocessor(preprocessor);
service.executePhaseOne();
service.executePhaseTwo();
service.executePhaseThree();
Чтобы лучше организовать свой код, я хочу, чтобы поместить каждый executePhaseXXX()
вызов в своем собственном отдельном подклассе Service
и оставить общие структуры данных для всех фаз в родительском классе Service
. Тогда, я хочу иметь execute()
метод в Service
родительского класса, который выполняет все в три этапа в последовательности:
class ServiceChildOne extends Service {
public void executePhaseOne() {
// Do stuff
}
}
class ServiceChildTwo extends Service {
public void executePhaseTwo() {
// Do stuff
}
}
class ServiceChildThree extends Service {
public void executePhaseThree() {
// Do stuff
}
}
EDIT:
Проблема заключается в том, как я пишу execute()
метод в Service
родителя класс? У меня есть:
public void execute() {
ServiceChildOne childOne = new ServiceChildOne();
ServiceChildTwo childTwo = new ServiceChildTwo();
ServiceChildThree childThree = new ServiceChildThree();
System.out.println(childOne.preprocessor); // prints null
childOne.executePhaseOne();
childOne.executePhaseTwo();
childOne.executePhaseThree();
}
Однако мой childOne
, childTwo
и childThree
объекты не в состоянии получить доступ к переменной preprocessor
экземпляра, который живет в родительском классе Service
... Как я мог пройти мимо этой проблемы?
Это уже «защищено», но оно по-прежнему равно нулю. См. Редактирование в оригинальной записи, пожалуйста. –
@ Ryan Yu См. Обновление. – Alex
Спасибо. Тем не менее, последующее наблюдение: мне нужно иметь доступ к _all_ переменных экземпляра, которые живут в родительском классе 'Service', а не только в препроцессоре. Если не передать их все в конструктор в подкласс, есть ли другой способ получить эту функциональность? Возможно, какой-то способ создания экземпляров подкласса? Есть идеи? Благодарю. –