Пакеты (package) в Java

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

Если увидели незнакомое выражение или термин — ну пугайтесь: мы это выучим. Я помню, что в статье об классах и методах обещал Вам рассказать про модификаторы, но нам будет сложно разобраться в этой теме без знания о пакетах. Поэтому, прежде чем мы начнем углубляться в модификаторы, давайте разберем, что такое пакет (package).

По сути дела, пакет это просто папка в нашем проекте чтобы не писать все классы в одной директории. Серьезные проекты насчитывают десятки тысяч классов. Представьте, если это все будет в одной папке. Поэтому и ввели разделение классов по разным папками (пакетам). Создать пакет просто: нажимаете на папке src вашего проекта правой клавишей мыши -> new -> package даете вашему пакету имя и готово.

создание пакеты джава

После того, как Вы разместили свой класс в пакете и хотите получить его в другом классе (да, так тоже можно), нужно использовать ключевое слово import и полное название пакета. Рассмотрим пример. Создадим пакет com.cat и в нем класс Cat — обычный класс который отображает объект кошка. Мы его создавали в прошлой статье. Только не добавляйте метод main. Далее создадим пакет com.main в котором будет новый класс. Назовем его RunnerClass и в него добавим метод main. Теперь попробуем создать наших кошек и вызвать их методы в классе RunnerClass.

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

Код    
  1. package com.cat; //заметьте, появилась новая строка объявления пакета
  2.  
  3. public class Cat {
  4.    
  5.     String color;
  6.     int weight;
  7.     String sex;
  8.     char s;
  9.     double v;
  10.     float g;
  11.     boolean b;
  12.    
  13.      Cat() {//конструктор без параметров
  14.         //сюда можно писать код, который будет выполняться при создании объекта
  15.     }
  16.      
  17.      Cat(String catsColor){//конструктор с одним параметром
  18.          color = catsColor;
  19.      }
  20.      
  21.      Cat(String catsColor, int catsWeight, String catsSex){//конструктор с тремя параметрами
  22.          color = catsColor;
  23.          weight = catsWeight;
  24.          sex = catsSex;
  25.      }
  26.    
  27.     void myaukat(int count){
  28.         for (int i = 0; i < count; i++) {
  29.             System.out.println("Meaou!");
  30.         }
  31.     }
  32.    
  33.     void walk(){
  34.         System.out.println("Char " + s);
  35.         System.out.println(v);
  36.         System.out.println(g);
  37.         System.out.println(b);
  38.  
  39.     }
  40.    
  41.     String methodForEveryObject(){
  42.        
  43.         return color + " cat is walking";
  44.     }
  45.  
  46. }

С классом Cat все в порядке, но вот класс RunnerClass подсвечен красным крестиком:

ошибка без импорта

Это потому, что мы забыли импортировать наш класс с другого пакета. Для решения проблемы, просто наведите курсор мыши на подчеркнутое слово Cat и в появившемся окне выберите Import ‘Cat’. Вы увидите, что перед объявлением класса прописалась строка import com.cat.Cat; — это путь к нашему классу. Если Вам нужно будет много импортировать то, чтобы не наводить курсор каждый раз и выбирать отдельно для каждого объекта в среде Eclipse для этого предусмотрено сочетание клавиш Ctrl+Shift+O. Это сохранит Вам много времени в будущем.

Не пугайтесь, если ошибки не пропали. Если Вы наведете на них, то увидите, что это уже ошибка другого рода. О ней мы поговорим в статье «модификаторы», которую я обещал Вам написать в прошлый раз.

Как видите, пакеты — очень удобный механизм разделения файлов на логические структуры и понятные структуры. Использовать пакеты намного удобнее, чем размещать классы в одной папке. Об этом Вы сможете убедиться, когда начнете писать действительно сложные и большие приложения.

А на этом, думаю, можно закончить говорить о пакетах, отдохнуть, закрепить материал и приступить к модификаторам.

Добавить комментарий