Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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


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

Зачем в Java нужны все эти "public" и "private"?
Vladimir.1982 вне форума   Ответить с цитированием
Старый 06.05.2018, 12:24   #2
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 16,973
Репутация: 3316

icq: 512-765
skype: alexp.frl
По умолчанию

Чтобы ограничивать доступ к каким-то элементам класса. Например это дает возможность изменять (рефакторить) что угодно в private функциях не боясь сломать код использующий этот класс (особенно важно для библиотек).
Alex11223 на форуме   Ответить с цитированием
Старый 06.05.2018, 21:09   #3
Vladimir.1982
Форумчанин
 
Регистрация: 30.04.2018
Адрес: Москва
Сообщений: 115
Репутация: -44
По умолчанию

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

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

1) public Puppy(String name)


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

Последний раз редактировалось Вадим Мошев; 13.06.2018 в 22:15.
Vladimir.1982 вне форума   Ответить с цитированием
Старый 10.05.2018, 14:18   #4
atihiy2010
Форумчанин
 
Аватар для atihiy2010
 
Регистрация: 22.04.2010
Адрес: Украина, Львов
Сообщений: 59
Репутация: 29

icq: 344545238
skype: morsus3050
По умолчанию

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

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

Цитата:
Сообщение от Vladimir.1982 Посмотреть сообщение
А "myPuppy" экземпляр, как я понял.
Именно так.
Black Fregat вне форума   Ответить с цитированием
Старый 14.06.2018, 00:32   #7
Вадим Мошев
гигаМодератор :)
Заслуженный модератор
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Адрес: Адрес: Адрес: Адрес: Адрес: Адрес: Адрес: Адрес: Адрес:
Сообщений: 7,593
Репутация: 3678
По умолчанию

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

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

icq: 512-765
skype: alexp.frl
По умолчанию

Ну если все подряд public, то все методы могут вызываться где угодно (а если это библиотека, то еще и в чужих проектах). А если private, то точно известно, что нигде больше это не вызывается и надо только не трогать public интерфейс.
Alex11223 на форуме   Ответить с цитированием
Старый 14.06.2018, 01:12   #9
Вадим Мошев
гигаМодератор :)
Заслуженный модератор
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Адрес: Адрес: Адрес: Адрес: Адрес: Адрес: Адрес: Адрес: Адрес:
Сообщений: 7,593
Репутация: 3678
По умолчанию

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

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

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

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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


23:19.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru