Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Unix.docx
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
1.91 Mб
Скачать

8.7. Использование пакетов

Для того, чтобы в одном классе можно было использовать другой класс, необходимо импортировать этот класс при помощи директивы import. Пример: import avtomobil; . Однако вы видите, что во всех приведен­ных ранее примерах этого не сделано. Объясняется это тем, что директиву import можно опустить, если файл класса находится в том же каталоге. Директива import используется, в основном, для импорта классов из пакетов.

Рассмотрим понятие пакета. Как известно, каждый класс помещается в отдельный файл класса. Большое количество файлов классов напоминает жесткий диск без каталогов или папок, поэтому файлы классов должны быть некоторым образом организованы. Для объединения исходных текстов файлов классов в один файл используются пакеты. Они напоминают библиотеки, имеющиеся во многих языках. Помимо того, что пакеты позволяют логически сгруппировать классы, они еще снимают проблему совпадения имен классов. Допустим, что есть два пакета "маляры" и "художники" и в рамках каждого пакета описан класс "кисточка" (очевидно, что малярная кисть отличается от кисти художника). Если бы пакетов не существовало, то возник бы конфликт, т. к. существует два класса с одинаковым именем. Использование пакетов снимает эту проблему, т.к. теперь доступ к классам будет организован так: "маляры.кисточка" и "художники.кисточка".

Для того чтобы включить класс в пакет, нужно при его объявлении использовать оператор package, который должен быть первым оператором в файле. Другими словами, перед этим оператором могут быть комментарии и пробелы, но ничего больше. Пример:

Верно

Неверно

package tachki; import java.awt.*; import java.io.*;

class avtomobil { long nomer;

void poehal ( ) { System.out.println (" Еду "); }

}

class mercedes extends avtomobil { void poehal ( )

{ System.out.println (" Еду быстро ..."); } void marka ( )

{ System.out.println (" Шестисотый мерс!"); } }

import java.awt.*; import java.io.*; package tachki;

class avtomobil { long nomer;

void poehal ( ) { System.out.println (" Еду "); }

}

class mercedes extends avtomobil { void poehal ( )

{ System.out.println (" Еду быстро ..."); } void marka ( )

{ System.out.println (" Шестисотый мерс!"); } }

Для использования класса из пакета, необходимо импортировать его, или импортировать пакет целиком. Синтаксис:

import имяпакета . имякласса // импортировать один класс

import имя_пакета . * // импортировать все классы из пакета

Пример:

import tachki . mercedes; import tachki . * ;

Можно и не импортировать пакет, тогда для использования класса придется указывать его полное название, включая имя пакета, что неудобно: tachki.mercedes moyatachka = new tachki.mercedes ( ); Также желательно не импортировать большие пакеты целиком, а ограничиться только теми классами, которые действительно нужны:

  1. При импорте пакета целиком виртуальная машина Java должна отслеживать имена всех элементов, имеющихся в пакете. На это расходуется дополнительная оперативная память. Кроме того, в этом случае немного снижается быстродействие системы

  2. Если импортируется несколько пакетов и окажется, что они имеют совпадающие имена файлов классов, то возникнет конфликт: какой же класс все-таки использовать?

  3. Самый главный минус связан с пропускной способностью Internet-соединения. Когда вы целиком импортируете пакеты, отсутствующие на вашем компьютере, то перед тем, как продолжить работу, браузер должен загрузить через сеть все файлы классов для целого пакета. Если в пакете имеется 30 классов, а используются только два, будут напрасно расходоваться значительные ресурсы и время пользователя.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]