I know in Java, especially when you do field hiding, you are able to access grandparent’s state variables:
((Grandparent) this).hiddenField
Why is the same rationale not the case for method calls? you can call super.method(), why not other ancestor’s as well?
There is no analog of field hiding for instance methods. Instance methods, unlike instance fields or static methods, are subject to dynamic dispatch and that’s a whole different story. In a sense, an overridden method is just not “there” anymore, and the only exception is within the overriding method body, and there only the method being directly overridden.