1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/wizardforcel-thinking-in-java-zh

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
5.3 接口与实现.md 6 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 11.03.2025 09:15 d56454c

5.3 Интерфейсы и реализация

Обычно мы считаем, что контроль доступа является способом "скрытия деталей реализации". После того как данные и методы упакованы в класс, можно создать тип данных с уникальными характеристиками и поведением. Однако из-за двух важных причин контроль доступа также задает границы этому типу данных. Первый аргумент заключается в том, чтобы указать программистам-клиентам, какие части они могут использовать, а какие нет. Мы можем строить наши внутренние механизмы внутри структуры, не беспокоясь о том, что клиентские программисты будут использовать их как часть интерфейса или "абузировать" их.

Этот аргумент непосредственно приводит ко второму: нам нужно разделить интерфейс от деталей реализации. Если структура используется в ряде программ, но пользователи могут выполнять только те действия, которые отправляют сообщение через public интерфейс, мы можем изменять всё остальное (например, "дружественные", protected, и private) без необходимости изменения кода пользователями.

Сейчас мы работаем в окружении объектно-ориентированного программирования, где класс фактически представляет собой "класс объектов", как если бы мы говорили о "классе рыб" или "классе птиц". Все объекты, принадлежащие данному классу, имеют общие характеристики и поведение. Класс — это описание внешнего вида и поведения всех объектов данного типа.В ранних языках OOP, таких как Simula-67, ключевое слово class использовалось для описания нового типа данных. То же самое ключевое слово было применено во многих других объектно-ориентированных языках программирования. Это действительно центральный элемент всего языка: случаи создания новых типов данных встречаются гораздо чаще, чем случаи использования контейнеров для хранения данных и методов.

В Java класс является основной концепцией ООП. Это одно из ключевых слов, которое не выделено жирным шрифтом в этой книге — из-за большого количества его использования могло бы вызвать серьёзные проблемы с версткой страниц.Для ясности можно использовать специальную стилистику при создании класса: располагайте public члены в начале, за которыми следуют protected, дружественные и private члены. Преимущество такого подхода состоит в том, что пользователи класса могут последовательно читать его сверху вниз и первым видеть наиболее важные для них элементы (то есть public члены, поскольку они доступны извне файла) и прекращать чтение после встречи с частными членами, которые уже являются частью внутренней реализации. Тем не менее, благодаря документации, поддерживаемой javadoc (описанной в главе 2), проблема читаемости кода была решена в значительной степени.

публичный класс X {
  публичный void pub1() { /* ... */ }
  публичный void pub2() { /* ... */ }
  публичный void pub3() { /* ... */ }
  приватный void priv1() { /* ... */ }
  приватный void priv2() { /* ... */ }
  приватный void priv3() { /* ... */ }
  приватный int i;
  // ...
}
```Поскольку интерфейсы и детали реализации все еще смешиваются, это делает чтение лишь частично удобным. Тем не менее, можно всё ещё видеть исходный код  детали реализации, так как они должны сохраняться внутри класса. Отображение интерфейса для потребителей класса является работой "классового браузера". Такое средство может найти все доступные классы, суммировать все действия, которые могут быть выполнены с ними (например, какие члены доступны), и отобразить в приятной форме. К моменту прочтения этой книги, все хорошие средства разработки Java должны иметь свои браузеры.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/wizardforcel-thinking-in-java-zh.git
git@api.gitlife.ru:oschina-mirror/wizardforcel-thinking-in-java-zh.git
oschina-mirror
wizardforcel-thinking-in-java-zh
wizardforcel-thinking-in-java-zh
master