Учитывая на следующем, в псевдокодеСсылки на статических поля подкласса абстрактного класса в теле метода абстрактного класса в
abstract public class Bug {
private static int BREEDTIME;
public void breed() {
if (this.age % this.BREEDTIME) {
world.setAt(new this.class(newX, newY, this.world);
}
}
}
public class Ant extends Bug {
private static int BREEDTIME = 3;
}
public class Doodlebug extends Bug {
private static int BREEDTIME = 8;
}
Есть ли способ, чтобы определить метод породы() таким образом, что это зависит от BREEDTIME какого подкласса это называется? Каждому подклассу bug
гарантируется инициализация BREEDTIME.
Кроме того, муравьи должны размножать других муравьев, поэтому конструктор, называемый внутри breed(), должен быть конструктором типа подкласса, вызывающего породу().
Я здесь лаяю неправильное дерево?
В PHP это называется [* поздно статическое связывание *] (http://php.net/manual/ ru/language.oop5.late-static-bindings.php), но он недоступен на Java. –