по-моему, такой вариант решил бы поставленную задачу

Код:
class BaseGoo extends Boo implements IGoo
function (param:BaseGoo):...
upd:
ну и методы интерфейса не оверрайдятся, а реализуются.. если необходимо, чтобы класс передаваемого экземпляра обязательно не пустым образом реализовывал эти методы - можно в классе BaseGoo во всех методах IGoo выбрасывать ошибки, тогда наследникам придётся все методы переписывать.. если я правильно вас понял вообще