В тази статия ще научите за пакетите и как да ги използвате за създаване на модулен код в Java.
Java пакет
Пакетът е просто контейнер, който групира свързани видове (Java класове, интерфейси, изброявания и пояснения). Например в основната Java ResultSet
интерфейсът принадлежи на java.sql
пакета. Пакетът съдържа всички свързани видове, които са необходими за SQL заявката и връзката с база данни.
Ако искате да използвате ResultSet
интерфейса във вашия код, просто импортирайте пакета java.sql (Импортирането на пакети ще бъде обсъдено по-късно в статията).
Както споменахме по-рано, пакетите са просто контейнери за Java класове, интерфейси и т.н. Тези пакети ви помагат да запазите пространството от имена на класа и да създадете поддържаем код.
Например можете да намерите два Date
класа в Java. Основното правило в програмирането на Java обаче е, че само едно уникално име на клас е разрешено в Java проект.
Как успяха да включат два класа с едно и също име Дата в JDK?
Това беше възможно, защото тези два Date
класа принадлежат към два различни пакета:
java.util.Date
- това е нормален клас Date, който може да се използва навсякъде.java.sql.Date
- това е SQL дата, използвана за SQL заявката и подобни.
Въз основа на това дали пакетът е дефиниран от потребителя или не, пакетите са разделени в две категории:
Вграден пакет
Вградените пакети са съществуващи Java пакети, които се доставят заедно с JDK. Например java.lang
, java.util
, java.io
и т.н. Например:
import java.util.ArrayList; class ArrayListUtilization ( public static void main(String() args) ( ArrayList myList = new ArrayList(3); myList.add(3); myList.add(2); myList.add(1); System.out.println(myList); ) )
Изход :
myList = (3, 2, 1)
В ArrayList
класа принадлежи java.util package
. За да го използваме, първо трябва да импортираме пакета, като използваме import
изявлението.
импортиране на java.util.ArrayList;
Потребителски дефиниран пакет
Java също ви позволява да създавате пакети според вашите нужди. Тези пакети се наричат дефинирани от потребителя пакети.
Как да дефинирам Java пакет?
За да дефинирате пакет в Java, използвате ключовата дума package
.
пакет packageName;
Java използва директории на файлова система за съхраняване на пакети. Нека създадем Java файл в друга директория.
Например:
└── com └── тест └── Test.java
Сега редактирайте файла Test.java и в началото на файла напишете изявлението на пакета като:
пакет com.test;
Тук всеки клас, който е деклариран в тестовата директория, принадлежи към пакета com.test .
Ето кода:
пакет com.test; class Test (публична статична void main (String () args) (System.out.println ("Hello World!");))
Изход :
Здравей свят!
Тук класът Test сега принадлежи към пакета com.test .
Конвенция за наименование на пакети
Името на пакета трябва да е уникално (като име на домейн). Следователно има конвенция за създаване на пакет като име на домейн, но в обратен ред. Например com.company.name
Тук всяко ниво на пакета е директория във вашата файлова система. Като този:
└── com └── фирма └── име
И няма ограничение за това колко поддиректории (йерархия на пакетите) можете да създадете.
Как да създам пакет в Intellij IDEA?
В IntelliJ IDEA ето как можете да създадете пакет:
- Щракнете с десния бутон върху папката източник.
- Отидете на нов и след това пакет .
- Ще се появи изскачащо поле, където можете да въведете името на пакета.
След като пакетът бъде създаден, подобна структура на папката ще бъде създадена и във вашата файлова система. Сега можете да създавате класове, интерфейси и така нататък в пакета.
Как да импортирам пакети в Java?
Java има import
изявление, което ви позволява да импортирате цял пакет (както в по-ранните примери) или да използвате само определени класове и интерфейси, дефинирани в пакета.
The general form of import
statement is:
import package.name.ClassName; // To import a certain class only import package.name.* // To import the whole package
For example,
import java.util.Date; // imports only Date class import java.io.*; // imports everything inside java.io package
The import
statement is optional in Java.
If you want to use class/interface from a certain package, you can also use its fully qualified name, which includes its full package hierarchy.
Here is an example to import a package using the import
statement.
import java.util.Date; class MyClass implements Date ( // body )
The same task can be done using the fully qualified name as follows:
class MyClass implements java.util.Date ( //body )
Example: Package and importing package
Suppose, you have defined a package com.programiz that contains a class Helper.
package com.programiz; public class Helper ( public static String getFormattedDollar (double value)( return String.format("$%.2f", value); ) )
Now, you can import Helper class from com.programiz package to your implementation class. Once you import it, the class can be referred directly by its name. Here's how:
import com.programiz.Helper; class UseHelper ( public static void main(String() args) ( double value = 99.5; String formattedValue = Helper.getFormattedDollar(value); System.out.println("formattedValue = " + formattedValue); ) )
Output:
formattedValue = $99.50
Here,
- the Helper class is defined in com.programiz package.
- класът Helper се импортира в различен файл. Файлът съдържа клас UseHelper.
- В
getFormattedDollar()
метода на класа Helper се нарича отвътре клас UseHelper.
В Java import
операторът се пише директно след инструкцията за пакета (ако съществува) и преди дефиницията на класа.
Например,
пакет package.name; пакет за импортиране.ClassName; // само импортиране на клас клас MyClass (// тяло)