[英]Java Object taking variables from another instance?
我不太确定该怎么称呼它,但实际上,当我运行此代码时:
public class test {
static Device one;
static Device two;
public static void main(String[] args) throws Exception {
one = new Device("One", "ONE");
System.out.println(one.getName());
two = new Device("Two", "TWO");
System.out.println(one.getName());
System.out.println(two.getName());
}
}
输出为:
ONE
TWO
TWO
什么时候应该是:
ONE
ONE
TWO
设备对象非常简单,它只接收两个字符串,第二个是我要它打印的“名称”。 我之前做过OOP,但是我觉得我只是忘记了一些重要的方面,但似乎无法弄清楚。 任何帮助表示赞赏,谢谢!
这是设备构造函数:
public Device(String iP, String Name) {
//Set the IP address
IP = iP;
//Set the device's name
name = Name;
// Set the string version of the device (for transmitting)
stringVersion = IP + ";" + name;
}
看起来您也使用了Device
static
字段。 这些不是实例字段。 应避免使用可变的static
字段。
从评论:
显示整个Device类。 IP和名称是静态的吗? – assylias 2分钟前
对,他们是
每当您实例化Device
的新实例时, Device
的静态成员都会被重新初始化,这就是您获得该行为的原因。 您可以将one
和two
设为static
但不应将可变成员变量设为static
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.