Существует несколько уродливые обходной путь, но они не должны использоваться, как это плохая практика.
Когда вы наследуете объект, это нормально, но вы не должны иметь прямого доступа к родительскому объекту этого объекта, так как изменение его поведения также может изменить поведение вашего первого родителя.
Обходной путь, который вы предложили, в порядке, так как это метод, который определен в самом родительском, поэтому он не изменяет поведение, поскольку родительский доступ к нему принадлежит самому родительскому, а не к тому, чтобы дочерний элемент получал доступ к нему grand-parent в обход его первый родитель.
Это главным образом, почему нет прямого способа сделать это. Если вы хотите получить доступ к чему-то в grand-parent, тогда это должно быть сделано в первом родительском вместо этого, а в вашем ребенке вы укажете родительскому лицу доступ к нему родительским.
Предположит, вы определить объект типа A, B и C.
- Б простирается А, В и С простирается Б.
- И А и В имеют один и тот же метод, с различными проверками.
- Поскольку C расширяет B, вызов метода должен использовать валидацию B, а не A.
- Используя super.super, вы можете напрямую вызвать метод в A и пропустить проверку B, которая нарушит защиту/правило наследования ,