2

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

  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

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

4

3 回答 3

1

您不能在方法中删除静态变量:

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

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;
    }

}

而你SubClass是这样的:

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);
    }
}
于 2013-06-13T20:45:50.803 回答
1
SubClass.calc(); //I believe I override it by passing value to a method within SubClass

,你没有覆盖它。只有当你extends另一个类然后覆盖进入图片时。另请记住,您不能覆盖static成员,因为它们属于类。您不必创建 Class 的实例来调用它们。

而且您还必须首先了解访问修饰符。访问另一个类的成员的简单规则是,如果该类是可见的并且如果它的成员没有限制性访问,那么您可以访问它们。

于 2013-06-13T21:59:40.463 回答
0

使用静态你可以存档:

public class class1
{
public static string myname = "light";


}

public class2 {

public static void displayMyname()
{
    System.out.println(class1.myname);
}

    }

请注意,显示值的方法也必须是静态的。

于 2013-06-13T20:34:20.370 回答