Люди, которые я начну с извинения, поскольку я уверен, что на это был дан ответ в другом месте - я просто не могу найти ответ, который объясняет это так, как я понимаю! Я делаю курс конверсии MSc, и есть некоторые элементарные основы, которые я все еще борется с этим, в том числе и этот - почему лучше сделать переменную private.
Скажем, у меня есть класс Java под названием Person, с методом печати. Я мог бы создать его и определить его как таковой:
public class Person
{
public String name;
public String telephoneNumber;
public void print()
{
System.out.println(name + " " + telephoneNumber);
}
}
Затем в основном классе я мог бы написать следующий код:
class testPerson
{
public static void main(String[] args)
{
Person test;
test = new Person();
test.name = "Mary";
test.telephoneNumber = "01234 567890";
test.print();
}
}
Если я сделал это, test.print(); будет производить вывод:
mary 01234 567890
Однако я знаю, что это считается плохой кодировкой. Переменные должны быть частными внутри открытого класса, так как мы не хотим, чтобы люди могли видеть, как эта информация хранится, или чтобы можно было редактировать информацию без разрешения.
Итак, теперь я отредактирую класс Person, чтобы объявить две строки приватными и добавить методы get и set, например:
private String name;
private String telephoneNumber;
public void setName (String name)
{
this.name = name;
}
public void getName()
{
return name;
}
// same code for telephone methods.
Теперь, в основном классе, я бы изменил методы установки имени и телефона на следующее:
mary.setName("Mary");
mary.settelephoneNumber("01234 567890");
В соответствии с примечаниями к лекции, которые я придерживаюсь, это более эффективно (хотя может быть сделано еще более эффективно, добавив в метод Person() для создания экземпляра и т.д.)
Однако я изо всех сил пытаюсь понять, почему это лучше.
В прежнем способе делать вещи пользователь мог напрямую обращаться к переменным. Но даже если скрывать переменные, они не могут напрямую обращаться к ним, пользователь может косвенно получить доступ и изменить их, что дает точно такой же результат.
Почему это предпочтено и что, без сомнения, глупость я не вижу/не замечаю?