Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.05.2018, 10:04   #1
Vladimir.1982
Форумчанин
 
Регистрация: 30.04.2018
Сообщений: 171
По умолчанию Зачем в Java нужны все эти "public" и "private"?

Зачем в Java нужны все эти "public" и "private"?
Vladimir.1982 вне форума Ответить с цитированием
Старый 06.05.2018, 11:24   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Чтобы ограничивать доступ к каким-то элементам класса. Например это дает возможность изменять (рефакторить) что угодно в private функциях не боясь сломать код использующий этот класс (особенно важно для библиотек).
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 06.05.2018, 20:09   #3
Vladimir.1982
Форумчанин
 
Регистрация: 30.04.2018
Сообщений: 171
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Чтобы ограничивать доступ к каким-то элементам класса. Например это дает возможность изменять (рефакторить) что угодно в private функциях не боясь сломать код использующий этот класс (особенно важно для библиотек).
Спасибо большое!

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Чтобы ограничивать доступ к каким-то элементам класса. Например это дает возможность изменять (рефакторить) что угодно в private функциях не боясь сломать код использующий этот класс (особенно важно для библиотек).
У меня еще вопрос, что из двух являеться здесь конструктором?

1) public Puppy(String name)


2) Puppy myPuppy = new Puppy( "Багет" )

Последний раз редактировалось Вадим Мошев; 13.06.2018 в 21:15.
Vladimir.1982 вне форума Ответить с цитированием
Старый 10.05.2018, 13:18   #4
atihiy2010
Пользователь
 
Аватар для atihiy2010
 
Регистрация: 22.04.2010
Сообщений: 60
По умолчанию

Конструктором является 1 пункт. Конструктор вызывается при создании обьекта. Как раз во втором пункте ты передаешь конструктору стоку "Багет"
atihiy2010 вне форума Ответить с цитированием
Старый 12.06.2018, 11:48   #5
Vladimir.1982
Форумчанин
 
Регистрация: 30.04.2018
Сообщений: 171
По умолчанию

Цитата:
Сообщение от atihiy2010 Посмотреть сообщение
Конструктором является 1 пункт. Конструктор вызывается при создании обьекта. Как раз во втором пункте ты передаешь конструктору стоку "Багет"
А "myPuppy" экземпляр, как я понял.
Vladimir.1982 вне форума Ответить с цитированием
Старый 12.06.2018, 22:14   #6
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Цитата:
Сообщение от Vladimir.1982 Посмотреть сообщение
А "myPuppy" экземпляр, как я понял.
Именно так.
Black Fregat вне форума Ответить с цитированием
Старый 13.06.2018, 23:32   #7
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Вопрос от человека, НЕ знающего java.

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Например это дает возможность изменять (рефакторить) что угодно в private функциях
Каким образом спецификаторы доступа public/private могут влиять на работу непосредственно с кодом, а рефакторинг кода именно её и предполагает?
Вадим Мошев вне форума Ответить с цитированием
Старый 13.06.2018, 23:55   #8
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ну если все подряд public, то все методы могут вызываться где угодно (а если это библиотека, то еще и в чужих проектах). А если private, то точно известно, что нигде больше это не вызывается и надо только не трогать public интерфейс.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 14.06.2018, 00:12   #9
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Это понятно. Для этого инцапсуляцию и придумали, то есть, сокрытие полей и свойств объекта за private спецификатором и взаимодействие с объектом через публичные методы и только через них.

Я же хотел сказать, что спецификаторы доступа не окажут никакого влияния на то, как я буду рефакторить код. Захотел отрефакторить public интерфейс - сделал это.
Вадим Мошев вне форума Ответить с цитированием
Старый 17.06.2018, 21:38   #10
Alexmur07
Форумчанин
 
Регистрация: 20.11.2008
Сообщений: 121
По умолчанию

етить, слово рефакторить знает а зачем паблик и прайвет не знает... вот это атрибуты XDDD погугли определение инкапсуляция - это одна из основ объектно ориентированного, поймёшь зачем прайвет и паблик, заодно разберись с наследованием и полиморфизмом
Разгон – вещь не определённая,
по этому конечный результат зависит от конкретного чипа (CPU или GPU а также моста), качества охлаждения и везения.

Последний раз редактировалось Alexmur07; 17.06.2018 в 21:53.
Alexmur07 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Для заданной строки определить все входящие в неё символ. Например: строка "abccbbabbac" состоит из символов "a", "b" и "c" Sandakan01 Помощь студентам 1 24.02.2016 03:20