Можно ли получить доступ к частной статической переменной и методу?

#java #oop #static #private #access-specifier

Вопрос:

Мы можем получить доступ к статическому свойству класса, написав 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; , то смогу ли я получить доступ к этой переменной каким-либо образом?

Комментарии:

1. Только с помощью метода получения. private это означает, что вы не сможете получить к нему доступ извне.

Ответ №1:

private Ключевое слово означает, что оно будет видно только внутри класса. Таким образом, в вашем примере это означает, что вы не можете получить к нему доступ, как A.a . Что вы можете сделать, так это создать public метод, который возвращает a .

 private static int a = 5;

public static int getA () {
    return a;
}
 

Затем вы можете статически вызвать этот метод и получить private static поле.

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

Однако обычно private static поля используются редко.

Еще одна вещь, которую я хотел бы добавить, — это общее использование static здесь. Поскольку вы фактически создаете экземпляр класса A static , модификатор является избыточным.