вторник, 17 ноября 2020 г.

Что такое пакеты и подпакеты в Java

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

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


   Обычно в пакеты объединяют классы одной и той же категории, либо предоставляющие сходную функциональность.
  Таким образом можно группировать типы, что необходимо сразу для нескольких целей:
 
   - Существует специальный уровень доступа, позволяющий типам из одного пакета более тесно взаимодействовать друг с другом, чем с классами из других пакетов
 
   -    Организация классов в виде пакетов позволяет избежать конфликта имен между классами (когда разработчики называют свои классы одинаковыми именами).
      Каждый пакет имеет свое пространство имен, что позволяет создавать одноименные классы в различных пакетах.
 
   - С применением пакетов гораздо проще эффективно организовать взаимодействие подсистем друг с другом



 
   Имена вложенных пакетов (подпакетов)описываются через точку.

   То есть для класса Tea, который лежит в пакете “drinks.hot” это значит, что в папке на диске, например, cods, где хранятся все файлы проекта, должна быть папка drinks, а в ней вложенная папка hot, в которой и должен храниться файл Tea.java, в котором и содержится код класса Tea.

   package drinks.hot;
   import java.io.IOExсeption;
   public class Tea
{
  public static void main(String[] args) throws IOExсeption
{
System.out.println("TEXT");
}
}
 
   По умолчанию java уже имеет ряд встроенных пакетов, например:
 
   java.lang - базовая функциональность языка и основные типы
      (данный класс заранее импортируется по умолчанию и его импортировать вручную не нужно)
   java.util - коллекция классов структур данных
   java.io - операции ввода-вывода
   java.math - математические операции
   java.nio - новый фреймворк для ввода-вывода
   java.net - операции с сетями, сокетами, DNS-запросами
   java.security - генерация ключей, шифрование и дешифрование
   java.sql — Java Database Connectivity (JDBC) для доступа к базам данных
   java.awt — иерархия основных пакетов для родных компонентов GUI
   javax.swing — иерархия пакетов для платформенно-независимых GUI компонентов
 
 

 


Как объявляются пакеты

   Объявление пакета – это первое выражение в модуле компиляции (первой строкой после комментариев перед кодом (при их наличии))

   Объявление пакета записывается с помощью ключевого слова package, после которого указывается полное имя пакета.

   Пример:

      Для файла java/lang/Object.java

      объявлением пакета будет являться строка package java.lang;

      (Даннная строка служит одновременно объявлением пакета lang, вложенного в пакет java, и указанием,что объявляемый ниже класс Object, находится в этом пакете).

      Полное имя класса Object в этом случае будет java.lang.Object.

 

Что такое безымянные пакеты

   Если это выражение (объявление пакета) отсутствует, то такой модуль компиляции будет принадлежать безымянному пакету.

   Этот пакет по умолчанию обязательно должен поддерживаться реализацией Java-платформы.

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

   (Пакет по умолчанию был введен в Java для облегчения написания небольших или временных приложений)

 

Область видимости пакетов и импорт классов пакетов (import)

   Область видимости объявления типа – пакет, в котором он располагается.

   То есть внутри этого пакета допускается обращение к типу по его простому имени.

   Из всех других пакетов необходимо обращаться по составному имени (полное имя пакета плюс простое имя типа, разделенные точкой).

 

   Так как пакеты могут иметь довольно длинные имена, для упрощения разработки ввели import-выражения:

   import-выражения позволяют импортировать типы в модуль компиляции и далее обращаться к ним по простым именам.

 

   Существует два вида import-выражений:

      1) импорт одного типа - записываются с помощью ключевого слова import и полного имени типа/

         Пример: import java.net.URL;

          Такое выражение означает, что в дальнейшем в этом модуле компиляции простое имя URL будет обозначать одноименный класс из пакета java.net

 

      2) импорт пакета - включает в себя полное имя пакета

         Пример: import java.awt.*;

         Это выражение делает доступными все типы, находящиеся в пакете java.awt, по их простому имени.

Комментариев нет:

Отправить комментарий

Наследование в Java

   «родительское/дочернее»     Наследование (inheritance) - свойство системы, позволяющее описать (создать) новый класс на основе уже су...