Это невозможно сделать на Java. Предположим, у вас есть подкласс SubClassEvent
, который реализует метод boolean intersect(SubClassEvent e2)
. Затем, если у него есть дополнительный подкласс SubSubClassEvent extends SubClassEvent
, он унаследует метод boolean intersect(SubClassEvent e2)
от SubClassEvent
, основываясь на том, как наследование работает в Java.
SubSubClassEvent
не нужно переопределять метод, поскольку метод не является абстрактным в своем суперклассе SubSubClass
. Но даже если SubSubClassEvent
хотел переопределить метод, он должен переопределить его с подписью boolean intersect(SubClassEvent)
. Если бы он реализовал метод с подписью boolean intersect(SubSubClassEvent)
, он не будет рассматриваться как переопределение метода boolean intersect(SubClassEvent)
из его суперкласса в соответствии с правилами переопределения метода Java.
Следовательно, SubSubClassEvent
является подклассом Event
, чей метод intersect
не принимает свой собственный тип в качестве типа параметра, нарушая ваше условие.