java - 如何从子类修改父类(super class)变量?

标签 java class subclass

在 C++ 中,我可以在多个文件中使用 1 个类,当我使用一个文件中的函数修改一个值时,它会全局更改该值。

在 Java 中,每个文件都必须有自己的类;当我使用一个文件中的方法更改值时,它不会全局更改该值。

例如在 C++ 中,文件可能如下所示:

一些类.h

class someClass{
private:
    int x;
public:
    //Constructor
    someClass(){
        x = 5;
    }
    void changeVariable(); //Declaring function for later
}

主要.cpp

int main(){
    someClass cClass;
    cClass.changeVariable(); //Call function
    cout << x; //outputs 6
}

文件A.cpp

void someClass::changeVariable(){
    x = 6; //x is changed to 6 globally.
}

在 Java 中:

一些类.java

public class someClass {
    int x;

    //Constructor
    public someClass() {
        x = 5;
    }

主.java

public class main {
    public static void main() {
        someClass cClass = new someClass();
        subClass cSub = new subClass();
        cSub.changeVariable();
        System.out.print(x); //outputs 5
    }
}

文件A.java

public class fileA extends someClass {
    void changeVariable() {
        x = 6; //x is changed to 6 only for fileA
    }
}

我的问题是如何更改子类中的变量,以便全局更改该变量(对于 Java)。抱歉,如果问题仍然令人困惑。

最佳答案

试试这个:

public class someClass {
    static int x;

    //Constructor
    public someClass() {
        x = 5;
    }

static 的变量意味着它的值对于同一类的所有对象都是通用的。仅为所有对象创建一个变量 x,而不是为每个对象创建一个变量。

如果您想很好地解释静态的含义,请阅读该答案:

What does the 'static' keyword do in a class?

关于java - 如何从子类修改父类(super class)变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30006242/

相关文章:

java - 以编程方式在相对布局中添加按钮网格

php - 是否有一个 call_user_func() 相当于创建一个新的类实例?

c++ - 具有继承的构造函数定义

c++ - 在 .h 文件或 .cpp 文件中实现类之间的区别

java - 自动将多个集合合并为一个

Java多态方法无法解析

超过 MSS 时的 Java 套接字发送延迟

java - 在 Java 8 中进行 ruby​​ 注入(inject)的优雅方式

ruby - 如何动态创建也在命名空间中的子类?

JavaFX Tableview 按自定义规则排序,然后按列选择