当前位置:编程学习 > JAVA >>

请问大侠们一个java语言的问题. 如果访问基类的基类的版本的方法?

有这样一组类.

class A {
int i = 1;
public void f() {
System.out.println("f() in A, i = " + i);
}
}

class B extends A {
int i = 2;
public void f() {
System.out.println("f() in B, i = " + i);
}
}

class C extends B {
int i = 3;
public void f() {
System.out.println("f() in C, i = " + i);
}

public void pr() {
f(); //此处打印出"f() in C, i = 3"这个字符串
super.f(); //此处打印出"f() in B, i = 2"这个字符串
//这里我想加一句调用A类中的f函数,打印出"f() in A, i = 1"这个字符串,该如何写?
}
} --------------------编程问答-------------------- 不能直接访问到。没有super.super.xxx

通过其他方式,比如

class A {
    public void method() { }
}

class B extends A {
    public void method() { }
    protected void superMethod() {
         super.method();
    }
}

class C extends B {
    public void method() { }

    void test() {
        method();          // C.method()
        super.method();    // B.method()
        superMethod();     // A.method()
    }
}
--------------------编程问答-------------------- 出这题的人该拿去枪毙了 --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 可不可以先转型再调用 --------------------编程问答-------------------- 这样就可以了。
A a = new A();
a.f(); --------------------编程问答-------------------- 2楼的办法需要修改B类,不修改有办法访问到吗?
我的意思是有没有办法可以访问到任意的一个父类中的方法,比如E extends D extends C extends B extends A,那么在E中可以访问到A,B,C,D中任意一个类中的f(),且不可以改变A,B,C,D任意一个类。不知道是否有解。 --------------------编程问答-------------------- new 对象吧,和6楼似的,不知道还有什么办法 --------------------编程问答-------------------- 当然是指调用本对象的方法,new另外一个对象没有意义,那样调用的是另一个对象的方法.
补充:Java ,  Java SE
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,