继承、方法的重写相关。

先暂且称作是祖类吧,祖类A有方法f1,父类B继承祖类A也有方法f1,然后再有子类C继承父类B,如果创建了一个子类C的对象。那么通过什么样的操作。才能让这个对象去实现指定的祖类A中的方法呢?我试了不加@override在父类和子类的f1方法前面,但是还是默认给重写了一样。这个地方。如果我子类C的对象去想用祖类A的方法。该怎么操作一下呢。谢谢。

结合构造器,祖父类的构造器中,调用它自己的f1方法,父类的构造器中,用super调用祖父类的构造器,当前类的构造器中,用super调用父类的构造器,因此,当你创建当前类时,Super先调用父类的构造器,而父类的构造器又调用了祖父类的构造器,祖父类的构造器中调用了他自己的f1方法,这样就实现了f1方法的调用。当然super也可以写在方法中,只要是层层调用就行。
有帮助的话采纳一下哦!

1、首先需要确定的是你提到的祖类和父类的方法签名是否一致,签名包含但不限于,方法名,参数数量、类型及顺序,返回值等
2、如果不一致,调用相对比较简单,如果有疑问可以在问我
3、如果签名一致,那么父类的方法其实就是祖父类的实现,@override 注解只是提示作用,不写它该是重写方法依然是
4、此时子类是无法直接访问祖父类的f1方法,如果真的需要那么有两种方法
a、修改祖父类的签名,这样即可直接重写,但这样会有父类的方法无法重写祖父类方法的问题
b、在父类中添加一个方法,去调用祖父类的f1方法,子类调用父类添加的方法即可,这样整个业务的逻辑相对比较混乱
总的来说,我只是分析了你的题意给你想要的结果,但是一旦业务中出现这种情况,那么要么是业务不合理,要么是系统设计不合理,需要仔细斟酌
有问题,欢迎沟通,共同成长!

跟楼上说的一样,子类是通过方法签名,来确定方法是否是重写父类方法的。

同时,在初始化子类C时,构造器的执行顺序一般是:

C() {
    super();
    // other
}
B() {
    super();
    // other
}
A() {
    super(); // object
    // other
}

当没有显式的调用父类构造方法时,就会隐式的生产super()。

如果你要用实列C调用父类B方法,直接执行super.meothd()就行。
那调用祖先A的方法呢?如果父类B没有重写,那么同样可以直接执行super.meothd()方法;如果父类B重写了这个方法,最简单的调用方式就是向上转型:

A a = c;
a.meothd();