Полиморфизм применяется к объектной ссылке, а не к типу. Когда вы вызываете
FooInterface obj = ...// Object of one of the child classes obj.foo();
, вызывается метод дочернего класса foo().
foo()