我学会了如何在两个类之间调用方法甚至变量。我想知道你是否可以在不使用继承的情况下将值从一个类移动到另一个类。这是一个例子:
这不是一个真正的程序架构,它只是为了我的学习目的。谢谢。 更新: 我被要求发布一些代码,说明我已经做了什么来表明上面的想法。 这是一个类:
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
我有什么办法可以解决这个问题吗?
答案 0 :(得分:2)
您无法在方法中声明静态变量:
尝试像这样编辑你的主类:
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);
}
}
答案 1 :(得分:1)
SubClass.calc(); //I believe I override it by passing value to a method within SubClass
否,你没有覆盖它。只有当你extends
另一个班级时,覆盖才能进入画面。另请注意,您无法覆盖static
成员,因为它们属于Class。您不必创建Class的实例来调用它们
此外,您还必须先了解 访问修饰符 。访问另一个类的成员的简单规则是,如果该类是可见的,并且如果其成员没有限制访问,那么您可以访问它们。
答案 2 :(得分:0)
使用静态,您可以存档:
public class class1
{
public static string myname = "light";
}
public class2 {
public static void displayMyname()
{
System.out.println(class1.myname);
}
}
请注意,显示值的方法也必须是静态的。