Вам нужен частный, чтобы обеспечить инкапсуляцию. Это одна из фундаментальных парадигм объектно-ориентированного программирования, позволяющая отделить реализацию чего-либо от интерфейса. Это уменьшает связь между вашими различными частями программы и в долгосрочной перспективе делает ее более удобной для обслуживания.
Возьмите следующий пример:
class toto {
private String someThing;
public String getSomething();
public void setSomething(String Something);
}
Если вы измените вышеприведенное, чтобы просто сделать someThing общедоступным, то, конечно, у вас будет меньше кода, но если однажды этот someThing должен будет измениться на более сложный объект для какой-то новой функциональности, тогда как старый код все еще может нормально работать со строкой, вы нужно все поменять. Выделив внутреннее представление someThing, вы сможете намного легче развить свою систему
class toto {
private ComplexSomeThing someThing;
public String getSomething(){ someThing.toString();}
public void setSomething(String something){ something = new ComplexSomeThing(something);}
public ComplexSomeThing (getComplexSomething();
public void setComplexSomething(ComplexSomething someThing);
}
Есть и другие причины, которые делают инкапсуляцию хорошей вещью (tm), это просто глупый пример, чтобы проиллюстрировать это.
EDIT
В настоящее время ведутся споры относительно использования защищенных и закрытых или использования концепций, похожих на свойства в некоторых языках (Delphi, C #), а не на методы получения и установки (как в Java).
Защищенный, а не частный, позволяет клиентам вносить более простые изменения, но он больше раскрывает внутреннюю часть вашей системы, поэтому необходимо соблюдать баланс между удобством использования API и его ремонтопригодностью. Однако основной принцип инкапсуляции остается.
Независимо от того, какой вариант выбран, нужно по-прежнему демонстрировать функциональность, которая является последовательной и на том же уровне абстракции, и скрывать мрачные детали того, как это делается.
Для меня спор не в том, чтобы объявить джихад против частного, а в том, чтобы найти способ обеспечить расширяемость и гибкость, не нарушая согласованность API.
Здесь некоторые интересные чтения о частном, если вы хотите копать дальше. Однако я должен подчеркнуть, что прежде чем составить мнение о частной жизни, вы должны действительно овладеть понятиями инкапсуляция и полиморфизм , их кажущаяся простота скрывает некоторые тонкие сложности .