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

Posted

技术标签:

【中文标题】是否可以访问私有静态变量和方法?【英文标题】:Is it possible to access a private static variable and method? 【发布时间】:2021-11-24 02:09:25 【问题描述】:

我们可以通过编写 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;,那么我可以通过何种方式访问​​该变量吗?

【问题讨论】:

只能通过getter方法。 private 表示您将无法从外部访问它。 【参考方案1】:

private 关键字意味着它只在类中可见。因此,在您的示例中,这意味着您无法像A.a 那样访问它。您可以做的是创建一个返回 apublic 方法。

private static int a = 5;

public static int getA () 
    return a;

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

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

但通常private static 字段很少使用。

我还想补充一点,这里一般使用static。 当您实际创建类 A 的实例时,static 修饰符是多余的。

【讨论】:

以上是关于是否可以访问私有静态变量和方法?的主要内容,如果未能解决你的问题,请参考以下文章

子类可以继承父类的一切方法,成员变量,甚至是私有的,但是却不能够访问这些私有的成员变量和方法

java内部类可以访问外部类的静态方法吗

js:私有变量和静态私有变量 | 访问私有属性

java中的内部类

java开发中所有静态变态变量写一个类

python 面向对象(成员,静态,类)的(变量,方法)区别