[英]Using a non static variable on a static method through an object? Java
既然我们不能在静态方法中使用this
,并且我们也不能使用非静态变量,为什么我们可以使用在静态方法中使用非静态变量的对象呢?
这就是我的意思:
public int x;
public int y;
public Account(int a, int b) {
this.x = a;
this.y = b;
}
public static void Swap(Account acc) {
int holder;
holder = acc.x;
acc.x = acc.y;
acc.y = holder;
}
因此Swap()
将起作用,即使对象内部的变量不是静态的。 我不明白这一部分。 会感激一些帮助。 TIA!
static
方法无法访问当前( this
)实例的实例变量,因为在其上下文中不存在此类实例。
但是,如果向它们传递对实例的引用,则它们可以访问对它们可见的任何实例变量和方法。
如果你的swap
示例,如果该方法不是static
,你可以删除acc
参数并this
实例变量进行操作:
public void swap() {
int holder;
holder = this.x;
this.x = this.y;
this.y = holder;
}
您不能在静态方法中使用this
,因为Java不知道您引用的是哪个实例(这个)。
可以传递给一个对象作为参数的引用acc
因为调用者指定传递该实例的静态方法。
当静态方法引用acc
时,Java知道你指的是哪个实例。 因此,您可以使用任何可访问的字段或acc
方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.