A) Boo f = new Boo(24) { };
Boo não possui construtor que receba um inteiro. Portanto, questão incorreta.
B) Boo f = new Bar() { };
Válido. Porque Bar é um Boo (i.e.: Bar extends Boo). E há um construtor vazio. E você adicionando o {} após o construtor, que dizer que você está criando uma anonymous class. Mesmo apesar de não redefiní-la, deixando apenas em branco.
C) Boo f = new Boo() (String s; };
Acredito que seja Boo f = new Boo() "{"String s; };. Há um ( onde deveria ser um { no seu post.
Caso esteja correto isso, é válido. Já que você estaria construindo um Objeto Boo, que existe e possui este construtor, e declarando dentro dele uma variável nova, do tipo String com o nome s.
D) Bar f = new Boo(String s) { };
Isso não é válido. Por que um Boo não é um Bar, mas sim um Bar é um Boo. Sei que é um pouco complicado, mas no livro há alguns exemplos deste tipo que talvez ajudem caso necessário ;-).
E) Boo f = new Boo.Bar(String s) { } ;
Inválido, porque Boo.Bar só funcionaria se Bar fosse uma innerclass de Boo. O que não é verdadeiro.
Então…a questão dá a idéia de que o ponto é a partir do lado de dentro de Bar mas a execução do código do item C (Boo f = new Boo() (String s; }; ) não envolve a classe Bar.
Estou começando a achar que o código ou as questões estão com algum engano.