java - java中是否可以将变量的值从一个类移动到另一个类而无需继承?

标签 java class class-design static-members argument-passing

我已经学会了如何在两个类之间调用方法甚至变量。我想知道是否可以在不使用继承的情况下将值从一个类移动到另一个类。这是一个例子:

  1. 我创建了两个类:class1 和 class2。
  2. 我输入一个值为 class1 的变量。
  3. 将变量的值移至 class2。
  4. 让值通过 class2 中的 if 语句进行测试。
  5. 可以将类 2 中的输出移至类 1,或者可以在类 1 中调用类 2 中的输出的方法。

但这不是一个真正的程序架构,它只是为了我的学习目的。谢谢。 更新: 我被要求发布一些我所做的代码来展示上述想法。 这是一类:

class MainClass
{
public static void main(String[] args)
{
    System.out.println("You have entered: " + args[0]);
    static int num = Integer.parseInt(args[0]);
    SubClass.calc(); //I believe I override it by passing value to a method within SubClass
}

}

这是第二堂课:

class SubClass
{
    public static void calc()
{
    System.out.println("This is the output" + MainClass.num);
}
}

我尝试将 args[0] 中的值从 MainClass 移动到 SubClass,但是当我尝试将其从 string 转换为 int 数据类型时出现错误:

pavel@pavel-OptiPlex-GX270:~/myjava$ javac MainClass.java
MainClass.java:9: error: cannot find symbol
static int num = Integer.parseInt(args[0]);
                                  ^
symbol:   variable args
location: class MainClass
1 error

我能做些什么来解决这个问题吗?

最佳答案

您不能删除方法内的静态变量:

尝试像这样编辑你的主类:

public class MainClass {

    private static int num;

    public static void main(String ... args) {
        System.out.println("You have entered: " + args[0]);
        num = Integer.parseInt(args[0]);
        SubClass.calc();

        //even better, pass in the argument
        SubClass.calc2(num);
    }

    public static int getNum() {
        return num;
    }

}

你的子类是这样的:

public class SubClass {
    public static void calc() {
        System.out.println("This is the output" + MainClass.getNum()); //invoke the public getter method. We hid the original num variable with private keyword
    }

    public static void calc2(int number) { 
        System.out.println(number);
    }
}

关于java - java中是否可以将变量的值从一个类移动到另一个类而无需继承?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17096539/

相关文章:

java - Spring MVC Controller 中的处理模型

c++ - 单独文件中的简单类和标题不起作用

c++ - 如何合并使用私有(private)成员的不同类的相同方法

java - 如何阻止我的命令行参数在 Maven 插件中被转义?

java - 在 Android ListView 中的文本旁边显示来自 REST 服务的图像

java - MySQL 服务器 5.1.72 的正确 JDBC 版本是什么?

c++ - 编译错误 : could not deduce template argument

swift - 当子类中有覆盖函数时如何转换为父类(super class)

c++ - 表示硬件设备的适当类结构

c++ - 对 C++ 类进行 STL 化