Вы можете передать это методам, но setTopWorldAgent () не может быть абстрактным. Вы не можете сделать виртуальный вызов в конструкторе.
В конструкторе объекта вы можете вызывать методы, определенные в этом объекте или базовых классах, но вы не можете ожидать вызова чего-то, что будет предоставлено производным классом, поскольку части производного класса не созданы еще. Я бы ожидал какую-то ошибку компилятора, если setTopWorldAgent () был абстрактным.
В Java вы можете получить удивительное поведение с помощью конструктора и производных классов - вот пример
http://en.wikipedia.org/wiki/Virtual_functions#Java_3
Если вы привыкли к C # или C ++, вы можете подумать, что безопасно вызывать виртуальные функции, а не вызывать переопределенные. В Java виртуальный вызов выполняется, даже если производный класс не полностью создан.
Если это не то, что происходит, то, по-видимому, все части этого, которые нужны setTopWorldAgent (), инициализируются - если нет, вероятно, это один из членов этого, который должен быть инициализирован.
Редактировать: думал, что это C #