我带着一个简单的OOP问题来找你。 让我们说有三个类--A,B和C. B和C都从A继承了一个静态变量。我们也说A将这个变量的值定义为0。 让我们说B和C都修改了这个静态变量的值。 我的问题是这个 - 因为静态变量在同一个类的成员之间保持不变,这是否意味着从子类设置超类变量的值对超类的值没有影响?
换句话说,如果我们将B&#39变量的值更改为1,那么对于B类对象而不是C或A,该值只会是1?
答案 0 :(得分:2)
静态字段只属于一个类,不会被其子类继承
答案 1 :(得分:0)
在这里,您可以找到适合您问题的简单java实现 结果可以解释解决方案。
class A {
static int variable = 0;
}
class B extends A{
}
class C extends A{
}
public class Runclass {
public static void main(String arg[]){
A a = new A();
System.out.println("A "+a.variable);
B b = new B();
System.out.println("B "+b.variable);
C c = new C();
System.out.println("C "+c.variable);
b.variable=1;
System.out.println("After modifying B "+b.variable);
System.out.println(" A "+a.variable);
}
}
输出:
A 0
B 0
C 0
After modifying B 1
A 1
答案 2 :(得分:0)
静态并不意味着不变。 final 表示您无法更改该值。
您可以使用此代码访问超类A中的变量并更改它,例如在B:A.someVariable = 1; <在此之后,如果你使用超类A变量(A.someVariable),你会看到C,B和A中的值1。
我给你一个代码示例:
package teszt;
class A {
static int statValami=0;
}
package teszt;
class B extends A{
void writeOut(){
A.statValami=1;
System.out.println(statValami);
}
}
package teszt;
class C extends A {
void writeOut(){
A.statValami=100;
System.out.println(statValami);
}
}
包teszt;
class Over {
public static void main(String args[]){
new B().writeOut();
new C().writeOut();
System.out.println(A.statValami);
}
}
输出为:1 1 100
100