日期:2014-05-20  浏览次数:20981 次

怎么调用爷爷类的函数
刚刚学了覆盖父类的成员函数,学了 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的,但是如果父类覆盖了其方法,那就木有办法了,那你只能在父类中写个方法调用其方法,然后调用父类的方法即可。
------解决方案--------------------
最笨的方法,创建一个"爷爷"对象,调用它的方法。