1. Pakej
Program Java biasa melibatkan sejumlah besar kelas. Berapa banyak? Beribu, berpuluh ribu. Dan jika anda juga mengambil kira fakta bahawa program ini menggunakan pelbagai perpustakaan yang mengandungi kelas yang ditulis oleh pengaturcara lain, maka bilangan kelas dengan mudah boleh diukur dalam berjuta-juta!
Adalah mustahil untuk menghasilkan nama unik untuk semua berjuta-juta, atau bahkan beribu-ribu, kelas.
Sudah tentu, kita boleh membayangkan nama seperti A123
dan B345
, tetapi jika kita bercakap tentang memilih nama kelas yang baik, nama yang memudahkan untuk memahami kelas (seperti String
untuk rentetan, contohnya), maka walaupun menjana seribu nama unik adalah banyak. kerja.
Itulah sebabnya di Java adalah kebiasaan untuk mengumpulkan kelas ke dalam pakej menggunakan kata kunci pakej.
Kelas Java dan pakejnya sangat serupa dengan fail dan folder pada komputer.
Sebagai contoh, jika anda perlu menyimpan 10 dokumen pada komputer anda, anda mungkin hanya menyimpannya dalam satu folder. Tetapi bagaimana jika anda mempunyai beribu-ribu dokumen (contohnya, repositori semua dokumen syarikat)?
Dengan beribu-ribu dokumen untuk disimpan, satu penyelesaian ialah mencipta pelbagai peringkat folder dengan nama deskriptif yang baik. Dan kemudian dalam folder di peringkat terakhir, simpan dokumen yang berkaitan dengan folder tertentu itu. Nama deskriptif yang baik untuk dokumen juga tidak menyakitkan.
Malah, kami melakukan semua ini untuk kelas di Jawa.
Fail yang mengandungi kelas disimpan dalam direktori (folder) berbeza dan nama penuh folder kelas dengan semua subfoldernya ialah nama pakej. Contoh:
Laluan ke fail | Nama pakej | Nama kelas |
---|---|---|
|
|
|
|
|
|
|
|
|
Tidak seperti nama folder, nama pakej menggunakan titik sebagai pembatas. Dengan kata lain, folder \com\codegym\tasks\
sepadan dengan com.codegym.tasks
pakej.
2. src
folder
Di Java, adalah kebiasaan untuk menyimpan semua kelas untuk program dalam satu folder (dan subfolder). Folder ini biasanya dipanggil src
(singkatan dari source ).
Folder ini dipanggil akar projek (atau akar sumber ), dan semua laluan pakej adalah relatif kepadanya. Contoh:
Folder | Nama pakej |
---|---|
|
|
|
|
Dalam situasi ini, pengaturcara mengatakan sesuatu seperti "kami mempunyai projek bernama my
, yang terletak dalam c:\projects\data
folder" atau "kami mempunyai projek bernama project
, yang terletak dalam d:\files\git\data
folder"
Adalah lebih baik untuk sentiasa meletakkan kelas dalam pakej dan tidak terus dalam folder akar ( src
. Jika anda hanya mempunyai beberapa kelas, ini tidak menimbulkan masalah. Tetapi apabila terdapat banyak kelas, ia sangat mudah untuk dikelirukan. Jadi , sentiasa buat kelas anda hanya dalam pakej.
Di Jawa, adalah kebiasaan untuk memberikan nama yang bermakna kepada kelas dan pakej. Banyak syarikat mengeluarkan perpustakaan mereka sendiri (satu set kelas) dan, untuk mengelakkan kekeliruan, mereka memasukkan nama syarikat/tapak web/projek ke dalam nama pakej:
Nama pakej | Nama syarikat/projek |
---|---|
|
projek Apache |
|
syarikat Oracle |
|
Syarikat Oracle, projek Java |
|
Syarikat IBM, projek WebSphere |
|
Projek JBoss |
3. Kandungan fail
Menurut standard bahasa Java, maklumat tentang nama kelas dan nama pakejnya mesti disertakan dalam fail dengan kod. Bentuk umum ditunjukkan di bawah:
package package-name;
public class ClassName
{
}
Nama pakej mesti sepadan dengan nama folder, dan nama fail mesti sepadan dengan nama kelas awam.
Jika anda mempunyai fail, maka ia harus mengandungi ini:...\src\com\project\Service.java
package com.project;
public class Service
{
}
4. Mengimport kelas
Nama kelas dan nama pakej membentuk apa yang dipanggil nama kelas yang layak sepenuhnya .
Contoh:
Nama yang layak sepenuhnya | Nama pakej | Nama kelas |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
tiada |
|
Berita baiknya:
Nama kelas yang layak sepenuhnya sentiasa unik dalam projek. Lagipun, anda tidak boleh mencipta dua fail dengan nama yang sama dalam satu folder.
Berita buruknya:
Nama kelas yang layak sepenuhnya biasanya sama ada panjang atau sangat panjang. Dan menulis nama panjang (contohnya java.util.ArrayList) setiap kali dalam kod adalah sangat menyusahkan.
Itulah sebabnya Java menambah keupayaan untuk mengimport kelas .
Anda boleh menggunakan nama pendek kelas dalam kod anda, tetapi anda mesti terlebih dahulu memberitahu pengkompil mana nama kelas yang layak sepenuhnya sepadan dengan nama pendek . Bagaimana jika anda kini berbilang kelas dengan nama yang sama dalam projek anda? Atau anda pada asalnya mempunyai satu, tetapi kemudian 15 lagi ditambahkan...
Untuk menggunakan nama kelas pendek dalam kod anda, anda perlu menambah binaan berikut:
import fully-qualified-class-name;
Pengisytiharan ini mesti ditambah pada permulaan kelas, sejurus selepas package
pengisytiharan.
Contoh:
package com.codegym.tasks.task01;
import java.util.Scanner;
import com.test.helper.special.ArrayList;
public class Solution
{
public static void main(String[] args)
{
Scanner console = new Scanner(System.in);
ArrayList list = new ArrayList();
}
}
Kami mengimport dua kelas ( java.util.Scanner
dan com.test.helper.special.ArrayList
), supaya kami boleh menggunakan nama pendek mereka dalam kod kami. Dan pengkompil akan mengetahui kelas mana yang hendak digunakan.
Dan inilah rupa kod yang sama jika kita tidak menggunakan import
:
package com.codegym.tasks.task01;
public class Solution
{
public static void main(String[] args)
{
java.util.Scanner console = new java.util.Scanner(System.in);
com.test.helper.special.ArrayList list = new com.test.helper.special.ArrayList();
}
}
Ngomong-ngomong, jika projek anda mempunyai dua kelas bernama Scanner
, anda tidak akan dapat mengimport kedua-duanya ke dalam fail yang sama: anda perlu menggunakan nama panjang untuk salah satu daripadanya.
Katakan anda mempunyai Jen dalam pasukan anda. Tiada masalah komunikasi, kerana semua orang tahu siapa dia. Tetapi jika terdapat tiga Jen, maka nama yang layak sepenuhnya perlu digunakan untuk membezakan mereka.
Ngomong-ngomong, jika anda terlalu malas untuk menambah banyak pernyataan import ke kelas anda, anda boleh menggunakan versi malasnya: bukannya nama kelas tertentu, letakkan asterisk:
import package-name.*;
Itu akan membolehkan anda menggunakan nama pendek semua kelas dalam pakej.
Semua kelas dalam java.lang
pakej diimport secara automatik, jadi anda tidak perlu menulis import
pernyataan untuk mereka. Anda pasti sudah mengetahui salah satu daripada kelas ini: java.lang.String
. Ya, betul. Ini ialah String
kelas yang telah kami gunakan untuk bekerja dengan rentetan.
GO TO FULL VERSION