是否可以访问私有静态变量和方法?

Is it possible to access a private static variable and method?

提问人:DEV_BOT 提问时间:10/3/2021 更新时间:10/17/2022 访问量:1333

问:

我们可以通过编写 className.propertyName 来访问类的静态属性,但是如果属性(方法/变量)是私有的,那么是否可以访问该属性?

例如

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;

Java OOP 静态 私有 访问说明符

评论

1赞 0xff 10/3/2021
只能通过吸气剂方法。 意味着您将无法从外部访问它。private

答:

3赞 0xff 10/3/2021 #1

关键字意味着它仅在类中可见。因此,在您的示例中,这意味着您无法像 .不过,您可以做的是创建一个返回 .privateA.apublica

private static int a = 5;

public static int getA () {
    return a;
}

然后,可以静态调用此方法并检索字段。private static

// ...
System.out.println(A.getA());

不过,通常很少使用字段。private static

我想补充的另一件事是这里的一般用法。 当您实际创建类的实例时,修饰符是多余的。staticAstatic

0赞 naveen anand967 10/17/2022 #2

您无法在类外或包外访问私有。因为 private 使它们只能在声明的类中访问。如果要访问类中的变量,则意味着 public、default 和 protected 只能在包外部访问 表示默认是不可能的,只有 public 和 protected 是可能的,protected 也有不同的包和非子类意味着不可能,只有子类是可能的(需要扩展类).public 只能对包内外的所有用户访问。

评论

0赞 Community 10/20/2022
正如目前所写的那样,你的答案尚不清楚。请编辑以添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。您可以在帮助中心找到有关如何写出好答案的更多信息。