Подтвердить что ты не робот

Почему методы "private" в объектно-ориентированном?

Я понимаю, что это очень простая концепция в oops. Но все же я не могу опустить голову. Я понял, почему переменные-члены являются частными, поэтому пользователь класса не может злоупотреблять им, установив недопустимые значения.

Но как это применимо к методам?

4b9b3361

Ответ 1

Много хороших ответов, но, возможно, еще одного из программиста Java-программиста, когда я прошел через все это с большой болью;)

Подумайте о классе как о чем-то видимом извне, а не о том, что вы видите внутри. Если вы посмотрите на класс со стороны, что видите?

Взяв часы в качестве примера снова, часы могут дать вам информацию о текущем времени, и его можно настроить, чтобы показать нужное время.

Таким образом, глядя на вещи снаружи, часы - это машина, которая может делать эти две вещи; которые мы называем ими.

Но мы, как конструкторы этих часов, знаем, что перед любой операцией мы должны переключаться с 23 на 11 на наш дисплей (это такие часы), поэтому нам нужно немного перестроить вещи для этого. Изменение с 23 до 11 прекрасно подходит для нас в обоих случаях - установка часов и отображение текущего времени - но мы делаем это "сбоку", так как пользователю не нужно знать обо всех этих сложных математиках. Это частные методы!

Таким образом, наш класс Clock может иметь два общедоступных метода (showTime и setTime), которые все, что пользователь хочет видеть, и частный метод (recountTime), который предоставляет функциональные возможности для этих общедоступных методов и это то, что пользователь не хочет видеть.

Итак, с одной стороны, вы должны иметь в виду, что private - это то, что не будет переопределяться и получать доступ к будущим программистам, используя ваш код (как указано в ответах выше). Но private также означает все, что делается на стороне, поэтому пользователь не видит его. Поэтому мы называем общедоступные методы общедоступным интерфейсом - это все, что пользователь увидит извне.

Для меня это полезно (я самоучкой, поэтому, возможно, это не очень популярная методология...), чтобы записать все, что пользователи (настоящие пользователи и другие классы) будут делать с моим классом (открытый интерфейс с просто публичные подписи методов), а затем написать подписи частных методов, которые I-the-implementationer будет использовать для достижения публичных целей, которые обещали предоставить моим пользователям, а затем просто выполнить его с помощью кода.

Может быть полезно иметь в виду, что старое правило C все еще действует (как было выражено в 97 вещей, которые должен знать каждый программист): функция/метод должна быть всего несколько строк, действительно!

Ответ 2

Частные методы полезны для разбиения задач на более мелкие части или для предотвращения дублирования кода, который часто требуется другими методами в классе, но не должны вызываться за пределами этого класса.

Ответ 3

Методы (также) используются для структурирования кода, и я не хочу, чтобы внутренняя структура моей реализации протекала через интерфейс. Часто у меня есть метод, который снаружи, кажется, выполняет одну задачу, но на самом деле должен выполнить несколько меньших задач. В таких случаях я делаю один небольшой частный метод для каждой из подзадач и вызываю их из общедоступного метода.

Ответ 4

По той же причине - некоторые методы предназначены только для использования внутри класса, а использование объектов, не относящихся к классу, будет злоупотреблять. Подумайте о методах, которые увеличивают и уменьшают количество объектов для класса - их следует вызывать только из конструкторов классов или деструкторов и поэтому должны быть частными.

Ответ 5

Способы, которые являются частными, могут быть вызваны только методами одного класса или одного и того же "модуля". Методы обычно не являются частными; обычно они защищаются, чтобы дети могли называть их или публично, чтобы другой код мог их называть.

Ответ 6

Ну, в некоторых случаях вы хотите, чтобы только этот конкретный класс использовал метод и защищал его от использования каким-либо другим классом.

Просто пример, чтобы показать, как его можно использовать:

У вас есть Clock Clock, он запускается и запускает отслеживание времени и даты. Вы можете получить время или дату из него через общедоступные методы. Но часы должны быть правы. поэтому вы не можете настроить время или дату вне класса. Но сами часы должны иметь возможность настраивать время (например, время сбережений)

В этом случае Clock будет иметь частный метод для настройки времени.

Затем у вас также есть дополнительный pro, который структурирует код. Вы можете разделить свой код на более мелкие частные методы, которые структурируют код, но не позволяют использовать их вне вашего класса.

Ответ 7

Имея все другие ответы. Стоит помнить, что частный метод - это только подсказка для программиста на многих языках. В большинстве случаев по-прежнему можно использовать частный метод. Например, создав объект, который наследует объект с помощью частного метода и переопределяет его метод новым общедоступным методом.

В некоторых современных высоко объектно-ориентированных языках частные методы существуют только по соглашению. Метод с '_' в начале считается приватным.