Это просто: C расширяет Object. Ни один подкласс C не может расширить B. Вы не можете добавить другой базовый класс, потому что Java не поддерживает множественное наследование.
Принимая во внимание, что подкласс C может очень хорошо реализовать этот дополнительный интерфейс.
Но просто нет способа, которым объект C мог бы также быть экземпляром B.
Итак:
D extends C implements B // obviously all fine
, тогда как
D extends B extends C
невозможно. Поскольку B уже определено до , не расширяет что-либо, кроме Object. Конечно, «хитрость» заключается в том, что оба класса B, C оба известны, и, как сказано: C не расширяет B.