Java — реализация параметризованных интерфейсов
Вот вам кусочек кода для медитации:

    interface Payable<T> {
        void doIt(T t);
    }

    class Employee implements Payable<Employee> {
        @Override
        public void doIt(Employee t) {}
    }
    
    class Hourly extends Employee implements Payable<Hourly> {
        //что реализовать?
        @Override
        public void doIt(Employee t) {}
        // или
        @Override
        public void doIt(Hourly t) {}
    }

В сложных случаях надо обращаться к первоисточнику: Chapter 8. Classes, где сказано:

A class may not at the same time be a subtype of two interface types which are different invocations of the same generic interface (§9.1.2), or a subtype of an invocation of a generic interface and a raw type naming that same generic interface, or a compile-time error occurs.

This requirement was introduced in order to support translation by type erasure (§4.6). 

А если неформально — то смысл тИповых параметров в том, чтобы статически сУзить допустимые типы для разных экземпляров отного и того же класса, так, чтобы у разных экземпляров сужение было разным. 

В приведенном Вами коде используется два разных сужения:  и :
class Employee implements Payable<Employee> {}
class Hourly extends Employee implements Payable<Hourly> {}
которые невозможно совместить в одном экземпляре. Стирание тут при том, что если бы его не было, можно было бы попытаться расклеить интерфейсы и требовать двух реализаций каждого метода (имхо, плохая затея), а так у нас только один метод doIt и две разных сигнатуры.