访问子类中的超类静态变量

时间:2015-10-03 15:55:52

标签: java inheritance

我有一个带有静态变量Test的超类a,我还创建了一个子类Test1,我可以从中访问超类静态变量。

这是一种有效的方法吗?任何解释都非常感谢。

public class Test {

    public static String a = "";

    Test() {
        a += "testadd";
    }
}

public class Test1 extends Test {

    public Test1() {
        a += "test1add";
    }

    public static void main(String args[]){
        Test1 test1 = new Test1();
        System.out.println(a);
    }
}

2 个答案:

答案 0 :(得分:1)

静态变量是类变量,您可以使用classname.variablename访问它们。

public class Test {

    public static String a = "";

    Test() {
        a += "testadd";
    }
}

public class Test1 extends Test {

    public Test1() {
        Test.a += "test1add";
    }

    public static void main(String args[]) {
        Test1 test1 = new Test1();
        System.out.println(a);
    }
}

答案 1 :(得分:1)

您可以使用subclass object.superClassStaticFieldSuperClassName.superClassStaticField访问它。 Latter是访问静态变量的静态方法。

例如:

public class SuperClassStaticVariable {
    public static void main(String[] args) {
        B b = new B();
        b.a = 2; // works but compiler warning that it should be accessed as static way
        A.a = 2; // ok 
    }
}

class A {   
    static int a;
}
class B extends A {}