如何直接访问m1()方法中的A类变量?

时间:2017-11-03 09:29:45

标签: java

class A {
    int i = 10;
}

class B extends A {
    int i = 20;
}

public class C extends B{
    int i = 30;

    public static void main(String[] args) {
        C c = new C();
        c.m1();
    }

    public void m1() {
        System.out.println(i);       // 30
        System.out.println(super.i); // 20
    }
}

我有一个 A 类,其中包含一个默认变量。我创建了一个子类 B ,它扩展了类 A ,还创建了一个子类 C ,它扩展了类 B 。< / p>

我想在子类 C m1()方法中访问类 A 变量。有没有直接的方法来访问它?

2 个答案:

答案 0 :(得分:6)

更改此行

System.out.println(super.i); // 20

System.out.println(((A)this).i);

答案 1 :(得分:1)

要使你的生活复杂化,试试这个:

public void m1() {
    System.out.println(this.i);
    C c = new C();
    Class<? extends Object> cls = c.getClass().getSuperclass().getSuperclass();
    Field[] fields = cls.getDeclaredFields();
    for ( Field field : fields )
    {
        String in = field.getName();
        int iv = field.get((Object)c);
        System.out.println(iv);
    }
}