#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
, модификатор является избыточным.