1.首先:你在子类里调用父类变量本来就不是一个很好的做法。 2.对于静态变量你可以使用 类名.name 来访问(如:Parent.name)。 例如: package com.test.parsub;public class Parent { public static String name = "yxc"; } package com.test.parsub;public class Child extends Parent{ public String name = "cxy"; public static void main(String[] args) {
System.out.println(Parent.name);//打印yxc
}}3.如果是private,可以这样访问,但并不是一种好的表达package com.test.parsub;public class Parent { private static String name = "yxc"; public String getName() { return name; } } package com.test.parsub;public class Child extends Parent{ public String name = "cxy"; public String getName() { return super.getName();//用这种方式可以调用父类的方法或成员 } public static void main(String[] args) {
System.out.println(new Child().getName());
}}
另,数据成员尽量使用private,通过set和get方法来访问他们。以体现良好的封装。
class Sub{ public static String name ="Sub"; } public class TestStatic extends Sub{ public static String name="Test";
回帖是一种美德!每天回帖即可获得 10 分可用分!
public class Test {
public static void main(String[] args) {
A a = new B();
System.out.println (a.name); // A 因为a是A的引用
B b = new B();
System.out.println (b.name); // B
System.out.println (A.name); // A
}
}class A {
public static String name = "A";
}class B extends A {
public String name = "B";
}
可以用素super.name来访问父类被隐藏的成员。注意:静态的变量可以隐藏,而静态的方法不允许覆盖。
静态方法里不允许使用super关键字。
7楼解释的很清楚了呀, 在子类里面调用父类静态变量的时候用super关键字`~~
2.对于静态变量你可以使用 类名.name 来访问(如:Parent.name)。
例如:
package com.test.parsub;public class Parent { public static String name = "yxc";
}
package com.test.parsub;public class Child extends Parent{
public String name = "cxy";
public static void main(String[] args)
{
System.out.println(Parent.name);//打印yxc
}}3.如果是private,可以这样访问,但并不是一种好的表达package com.test.parsub;public class Parent { private static String name = "yxc";
public String getName() {
return name;
}
}
package com.test.parsub;public class Child extends Parent{
public String name = "cxy";
public String getName() {
return super.getName();//用这种方式可以调用父类的方法或成员
}
public static void main(String[] args)
{
System.out.println(new Child().getName());
}}
public static String name ="Sub";
}
public class TestStatic extends Sub{
public static String name="Test";
public static void main(String[] args) {
System.out.println(name); //Test
System.out.println(Sub.name); //Sub
}
}