是否可以访问私有静态变量和方法?
Is it possible to access a private static variable and method?
我们可以通过写 className.propertyName 访问 class 的静态 属性,但是如果 属性 (method/variable) 是私有的,那么它是不是可以访问 属性?
例如,
class A{
static int a = 50;
}
public class HelloWorld{
public static void main(String []args){
System.out.print("A.a = ");
A obj = new A();
System.out.println(A.a);
}
}
这将打印 A.a = 50
但是如果我将 static int a = 50;
更改为 private static int a = 50;
那么我可以通过任何方式访问该变量吗?
private
关键字意味着它只会在 class 中可见。因此,在您的示例中,这意味着您无法像 A.a
那样访问它。你可以做的是创建一个 public
方法 returns a
.
private static int a = 5;
public static int getA () {
return a;
}
然后您可以静态调用此方法并检索 private static
字段。
// ...
System.out.println(A.getA());
通常 private static
字段很少使用。
还有一件事我想补充的是static
在这里的一般用法。
当您实际创建 class A
的实例时,static
修饰符是多余的。
我们可以通过写 className.propertyName 访问 class 的静态 属性,但是如果 属性 (method/variable) 是私有的,那么它是不是可以访问 属性?
例如,
class A{
static int a = 50;
}
public class HelloWorld{
public static void main(String []args){
System.out.print("A.a = ");
A obj = new A();
System.out.println(A.a);
}
}
这将打印 A.a = 50
但是如果我将 static int a = 50;
更改为 private static int a = 50;
那么我可以通过任何方式访问该变量吗?
private
关键字意味着它只会在 class 中可见。因此,在您的示例中,这意味着您无法像 A.a
那样访问它。你可以做的是创建一个 public
方法 returns a
.
private static int a = 5;
public static int getA () {
return a;
}
然后您可以静态调用此方法并检索 private static
字段。
// ...
System.out.println(A.getA());
通常 private static
字段很少使用。
还有一件事我想补充的是static
在这里的一般用法。
当您实际创建 class A
的实例时,static
修饰符是多余的。