Множество хороших ответов, но, может быть, еще один от программиста-самоучки на Java, когда я сам прошел через все это с большой болью;)
Думайте о Классе как о чем-то, что видно снаружи, а не как о чем-то, что вы видите внутри . Если вы смотрите на класс со стороны, что вы видите?
Снова взяв часы в качестве примера, часы могут дать вам информацию о текущем времени , и его можно установить , чтобы показать правильное время .
Итак, смотря на вещи снаружи, часы - это машина, которая может делать эти две вещи; публичные методы мы называем их .
Но мы, как конструкторы этих часов, знаем, что перед любой временной операцией мы должны переключаться с 23 на 11 на нашем дисплее (это такие часы), поэтому мы должны немного переставить вещи для этого. Переключение с 23 на 11 прекрасно работает для нас в обоих случаях - установка часов и отображение текущего времени - но мы делаем это «на стороне» , поскольку пользователю не нужно знать обо всем этом сложная математика. Это частные методы!
Таким образом, наш класс Clock
может иметь два открытых метода (showTime
и setTime
), которые пользователь хочет увидеть. и закрытый метод (recountTime
), который обеспечивает функциональность для этих открытых методов и является тем, что пользователь не хочет видеть.
Итак, с одной стороны, вы должны иметь в виду, что private - это то, что не будет переопределено и доступно будущим программистам , использующим ваш код (как указано в ответах выше). Но приватный также означает что-то сделанное на стороне, поэтому пользователь не видит его . Вот почему мы называем публичные методы публичный интерфейс - это все, что пользователь увидит снаружи.
Для меня полезно (я самоучка, поэтому, возможно, это не очень популярная методология ...) записывать все, что пользователи (реальные пользователи и другие классы) будут делать с моим классом (общедоступный интерфейс с только сигнатуры открытых методов), а затем написать сигнатуры закрытых методов, которые I-the-Implementer будет использовать для достижения публичных целей, которые обещали предоставить моим пользователям, а затем просто выполнить их с помощью кода.
Может быть полезно иметь в виду, что старое правило C все еще действует (как было выражено в 97 вещей, которые должен знать каждый программист ): функция / метод должен быть длиной всего в несколько строк, действительно!!