Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> java

Java — Пакеты

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

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

Некоторые из существующих пакетов в Java —

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

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

Создание пакета

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

Оператор пакета должен быть первой строкой в ​​исходном файле. В каждом исходном файле может быть только один оператор package, и он применяется ко всем типам в файле.

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

Чтобы скомпилировать программы Java с операторами пакета, вы должны использовать параметр -d, как показано ниже.

javac -d Destination_folder file_name.java

Затем в указанном месте создается папка с заданным именем пакета, и файлы скомпилированных классов будут помещены в эту папку.

Пример

Давайте рассмотрим пример создания пакета с именем animals. . Рекомендуется использовать имена пакетов строчными буквами, чтобы избежать конфликтов с именами классов и интерфейсов.

Следующий пример пакета содержит интерфейс с именем animals

/* File name : Animal.java */
package animals;

interface Animal {
   public void eat();
   public void travel();
}

Теперь давайте реализуем описанный выше интерфейс в том же пакете animals. −

package animals;
/* File name : MammalInt.java */

public class MammalInt implements Animal {

   public void eat() {
      System.out.println("Mammal eats");
   }

   public void travel() {
      System.out.println("Mammal travels");
   } 

   public int noOfLegs() {
      return 0;
   }

   public static void main(String args[]) {
      MammalInt m = new MammalInt();
      m.eat();
      m.travel();
   }
} 

Теперь скомпилируйте файлы Java, как показано ниже —

$ javac -d . Animal.java 
$ javac -d . MammalInt.java

Теперь пакет/папка с названием animals будет создан в текущем каталоге, и эти файлы классов будут помещены в него, как показано ниже.

Вы можете выполнить файл класса в пакете и получить результат, как показано ниже.

Mammal eats
Mammal travels

Ключевое слово импорта

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

Пример

Здесь класс с именем Boss добавляется в пакет расчета заработной платы, который уже содержит Employee. Затем Boss может ссылаться на класс Employee без использования префикса расчета заработной платы, как показано в следующем классе Boss.

package payroll;
public class Boss {
   public void payEmployee(Employee e) {
      e.mailCheck();
   }
}

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

payroll.Employee
import payroll.*;
import payroll.Employee;

Примечание − Файл класса может содержать любое количество операторов импорта. Операторы импорта должны стоять после оператора пакета и перед объявлением класса.

Структура каталогов пакетов

Когда класс помещается в пакет, возникают два основных результата:

Вот простой способ управления вашими файлами в Java —

Поместите исходный код класса, интерфейса, перечисления или типа аннотации в текстовый файл, имя которого является простым именем типа и расширением .java. .

Например —

// File Name :  Car.java
package vehicle;

public class Car {
   // Class implementation.   
}

Теперь поместите исходный файл в каталог, имя которого отражает имя пакета, к которому принадлежит класс —

....\vehicle\Car.java

Теперь полное имя класса и путь будут следующими:

Как правило, компания использует обратное доменное имя в Интернете для имен своих пакетов.

Пример − Интернет-доменное имя компании — apple.com, тогда все имена ее пакетов будут начинаться с com.apple. Каждый компонент имени пакета соответствует подкаталогу.

Пример − У компании был пакет com.apple.computers, содержащий исходный файл Dell.java, он должен был находиться в ряде подкаталогов, подобных этому −

....\com\apple\computers\Dell.java

Во время компиляции компилятор создает отдельный выходной файл для каждого определенного в нем класса, интерфейса и перечисления. Базовое имя выходного файла — это имя типа, а его расширение — .class. .

Например —

// File Name: Dell.java
package com.apple.computers;

public class Dell {
}

class Ups {
}

Теперь скомпилируйте этот файл следующим образом, используя параметр -d —

$javac -d . Dell.java

Файлы будут скомпилированы следующим образом —

.\com\apple\computers\Dell.class
.\com\apple\computers\Ups.class

Вы можете импортировать все классы или интерфейсы, определенные в \com\apple\computers\. следующим образом —

import com.apple.computers.*;

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

<path-one>\sources\com\apple\computers\Dell.java

<path-two>\classes\com\apple\computers\Dell.class

Делая это, можно предоставить доступ к каталогу классов другим программистам, не раскрывая свои источники. Вам также необходимо управлять исходными файлами и файлами классов таким образом, чтобы компилятор и виртуальная машина Java (JVM) могли найти все типы, которые использует ваша программа.

Полный путь к каталогу классов, \classes, называется путем к классу и задается системной переменной CLASSPATH. И компилятор, и JVM создают путь к вашим файлам .class, добавляя имя пакета к пути к классу.

Скажем, \classes — это путь к классу, а имя пакета — com.apple.computers, тогда компилятор и JVM будут искать файлы .class в \classes\com\apple\computers.

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

Установить системную переменную CLASSPATH

Чтобы отобразить текущую переменную CLASSPATH, используйте следующие команды в Windows и UNIX (оболочка Bourne) —

Чтобы удалить текущее содержимое переменной CLASSPATH, используйте -

Чтобы установить переменную CLASSPATH –


java

  1. Пакет Python
  2. Окончательное ключевое слово Java
  3. Оператор экземпляра Java
  4. Вложенный статический класс Java
  5. Анонимный класс Java
  6. Одноэлементный класс Java
  7. Java-отражение
  8. Класс Java ObjectOutputStream
  9. Дженерики Java
  10. Класс файла Java