刚刚学了覆盖父类的成员函数,学了 super 关键字,我以为 “super.super.函数” 能调用爷爷类的函数,但编译不了
------解决方案--------------------
没你这么干的,如果非得用“爷爷”的构造函数,那么有两个选择
第一,设计上直接 继承“爷爷”,放弃“父类”
第二,通过super调用父类的构造函数,在父类的构造函数调用super调用“爷爷”的构造函数
相当于传递一次
------解决方案--------------------
你只能调用自己和父亲的东西,虽然有些方法是在爷爷哪里定义的,只是因为你的父亲继承下来了,所以你也可以调用。
如果你的父亲重写了,那你就没有办法直接调用爷爷的东西,就是这样。
------解决方案--------------------
我晕死,public protected方法,那你直接调用就行了啊,只要你这个类里面没有覆盖父类和爷爷类的方法
有任何问题么?
- Java code
public class Test1 { public static void main(String[] args){ new GrandchildClass().sayHello(); }}class GrandFatherClass{ public void sayHello(){ System.out.println("hello"); }}class FatherClass extends GrandFatherClass{}class GrandchildClass extends FatherClass{ }
------解决方案--------------------
只要父类没有覆盖爷类的方法,子类完全可以调用的啊
------解决方案--------------------
直接调用就可以了,只要不是private的,但是如果父类覆盖了其方法,那就木有办法了,那你只能在父类中写个方法调用其方法,然后调用父类的方法即可。
------解决方案--------------------
最笨的方法,创建一个"爷爷"对象,调用它的方法。