сомнения по поводу частных членов и методов - PullRequest
0 голосов
/ 09 апреля 2010

У меня есть сомнения в закрытых полях, переменных и методах, если я создал класс, который содержит закрытые переменные и методы, то как я могу использовать, когда искать закрытые члены, методы и когда не использовать?

Ответы [ 10 ]

2 голосов
/ 09 апреля 2010

Закрытые члены (методы тоже являются членами) - это то, как вы реализуете Инкапсуляция , которая, возможно, является наиболее важной концепцией в объектно-ориентированном программировании.

Идея состоит в том, чтобы различать конкретные детали реализации и абстрактные интерфейсы. Абстрактный интерфейс указывает , что делает класс, он используется другими классами и не должен часто меняться. Для этого и нужны члены pubich.

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

1 голос
/ 09 апреля 2010

Доступ к закрытым членам возможен только из класса. Это очень полезно, чтобы не портить API класса. Если вы объявите метод как открытый, каждый внешний класс может использовать его и зависит от него. Позже вы нарушаете код, если хотите его изменить. Если это личное, изменение ограничено самим классом.

1 голос
/ 09 апреля 2010

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

1 голос
/ 09 апреля 2010

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

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

Public - любой другой класс может получить к ним доступ, увидеть и использовать их.

Сегодня я узнал, что у Java также есть другой уровень доступа, который подразумевается, если вы не укажете public / protected / private. Это называется «закрытый пакет» и означает, что классы в одном и том же пакете могут обращаться к членам, но ни один класс вне пакета не может.

Эта страница также может вам помочь.

0 голосов
/ 09 апреля 2010

Я думаю, что у вас уже достаточно ответов. Ваш вопрос, дайте мне знать, что вы только начинаете использовать язык, я настоятельно рекомендую вам получить копию Джошуа Блоха "Эффективная Java" , он объясняет не только то, что делает язык, но и многое другое. главное как эффективно его использовать. Как и в этом случае, зачем выбирать частных членов над пакетными, общедоступными или защищенными. Привет

0 голосов
/ 09 апреля 2010

Открытые и защищенные члены являются частью экспортируемых вами классов API. Частные и так называемые частные уровни доступа к пакету являются частью внутренней реализации.

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

См. Эффективная Java, 2-е изд. для лучшего объяснения:

Пункт 13: Минимизировать доступность классов и членов

Пункт 17: Дизайн и документ для наследования или иначе запретить

Цитата:

"Единственный самый важный фактор, который отличает хорошо спроектированный модуль от плохо продуманным является степень, до которой модуль скрывает свои внутренние данные и другие детали реализации из других модулей. "

0 голосов
/ 09 апреля 2010

Класс только с закрытыми членами и методами является неизменяемым классом, что делает его хорошим кандидатом для использования в качестве ключа в Map. Однако вам нужно предоставить не приватный конструктор и правильно переопределить метод hashCode и equals.

0 голосов
/ 09 апреля 2010

, если напишите отдельный класс JDBC для метода Connection как private, что происходит так что я не могу использовать этот метод подключения в моем классе deff ...

0 голосов
/ 09 апреля 2010

Из учебников Sun :

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

  • Использование private если у вас нет веских причин не к.
  • Избегайте public полей, кроме константы. (Многие из примеров в В учебнике используются открытые поля. это может помочь проиллюстрировать некоторые моменты кратко, но не рекомендуется для производственный код.) Открытые поля имеют тенденцию чтобы связать вас с конкретным реализация и ограничить ваш гибкость в изменении вашего кода.
0 голосов
/ 09 апреля 2010

Принцип инкапсуляции применительно к Java (грубо говоря) гласит, что поля должны быть закрытыми, а значения доступны через методы getXXX () и setXXX ().

Закрытые методы - это методы, которые являются только внутренними по отношению к классу, в котором они находятся, и бесполезны вне этого класса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...