แพคเกจ Java (package)
เพื่อที่จะให้การจัดชั้นเรียน Java ให้กลไกการแพคเกจสำหรับความแตกต่างระหว่างชื่อชั้นของ namespace ที่
บทบาทของแพคเกจ
- ฟังก์ชั่นที่คล้ายกันหรือองค์กรที่เกี่ยวข้องของชั้นเรียนหรืออินเตอร์เฟซในแพคเกจเดียวกันในการค้นหาและง่ายต่อการใช้คลาส
- 2 เป็นโฟลเดอร์เดียวกันแพคเกจยังใช้ต้นไม้ไดเรกทอรีการจัดเก็บข้อมูล ชั้นเรียนในชื่อแพคเกจเดียวกันที่แตกต่างกันชื่อแพ็กเกจที่แตกต่างกันของชั้นเหมือนกันขณะเดียวกันเรียกร้องให้ทั้งสองประเภทที่แตกต่างกันของแพคเกจในชื่อชั้นเดียวกันชื่อแพคเกจควรจะเพิ่มความแตกต่าง ดังนั้นชื่อแพคเกจที่จะหลีกเลี่ยงความขัดแย้ง
- 3 แพคเกจยังกำหนดสิทธิการเข้าถึงการเรียนมีการเข้าถึงแพคเกจในการเข้าถึงแพคเกจของการเรียน
Java ใช้แพคเกจ (package) กลไกนี้ถูกออกแบบมาเพื่อป้องกันไม่ให้เกิดความขัดแย้งการตั้งชื่อ, การควบคุมการเข้าถึงการให้บริการค้นหาและค้นหาชั้น (ชั้น), อินเตอร์เฟซ, enumerations (enumerations) และความคิดเห็น (บันทึกย่อ) และไม่ชอบ
แพคเกจไวยากรณ์คำสั่งคือ:
package pkg1[.pkg2[.pkg3…]];
ตัวอย่างเช่นไฟล์ Something.java เนื้อหา
package net.java.util public class Something{ ... }
แล้วมันควรจะเป็นเส้นทางสุทธิ / java / util / Something.java ที่บันทึกไว้เพื่อให้ แพคเกจ (package) บทบาทในการจำแนกโปรแกรม Java ที่แตกต่างกันที่เก็บไว้ได้ง่ายขึ้นจะเรียกว่าโดยโปรแกรม Java อื่น ๆ
แพคเกจ (package) สามารถกำหนดเป็นชุดของประเภท (เรียนอินเตอร์เฟซ enumerations และคำอธิบายประกอบ) ที่เชื่อมต่อกันเพื่อให้การป้องกันการเข้าถึงและการจัดการ namespace ฟังก์ชั่นสำหรับประเภทนี้
นี่คือบางส่วนของ Java ในแพคเกจ:
- java.lang- บรรจุชั้นฐาน
- ฟังก์ชั่น Java.io- มีฟังก์ชันอินพุตและเอาต์พุต
นักพัฒนาสามารถใส่ชุดของตัวเองเรียนและอินเตอร์เฟซที่บรรจุและกำหนดแพคเกจของคุณเอง และในการพัฒนาที่เกิดขึ้นจริงคือการได้รับการส่งเสริมให้ทำเช่นนั้นเมื่อคุณเสร็จสิ้นระดับการดำเนินการจัดกลุ่มการเรียนที่เกี่ยวข้องเพื่อให้การเขียนโปรแกรมอื่น ๆ ได้ง่ายขึ้นสามารถตรวจสอบที่ชั้นเรียนอินเตอร์เฟซ enumerations และความคิดเห็นที่เกี่ยวข้อง .
เนื่องจากแพ็กเกจสร้าง namespace ใหม่ (namespace) ดังนั้นการตั้งชื่อโดยไม่เกิดความขัดแย้งกับชื่อแพคเกจอื่น ๆ ใช้กลไกการแพคเกจนี้ง่ายต่อการใช้การควบคุมการเข้าถึงและให้หาระดับที่เกี่ยวข้องได้ง่ายขึ้น
สร้างแพคเกจ
สร้างแพคเกจที่คุณจำเป็นต้องใช้ชื่อที่เหมาะสมสำหรับแพคเกจนี้ แล้วถ้าไฟล์ต้นฉบับที่มีชั้นเรียนอื่น ๆ ที่นำเสนอแพคเกจอินเตอร์เฟซหรือคำอธิบายประกอบ enum ประเภทนี้แพคเกจการประกาศนี้จะต้องวางไว้ที่จุดเริ่มต้นของแฟ้มแหล่งที่มานี้
แพคเกจควรจะประกาศในบรรทัดแรกของไฟล์ที่มาสำหรับแฟ้มแหล่งที่มาแต่ละคนสามารถมีคำสั่งเพียงหนึ่งแพคเกจไฟล์แต่ละประเภทจะใช้กับมัน
หากคุณไม่ได้ใช้คำสั่งแพคเกจในแฟ้มแหล่งที่มาแล้วหนึ่งในชั้นเรียน, ฟังก์ชั่นการแจงนับความคิดเห็น ฯลฯ จะถูกวางไว้ในแพคเกจที่ไม่มีชื่อ (แพคเกจที่ไม่มีชื่อ) ใน
ตัวอย่าง
ลองดูตัวอย่างที่สร้างแพคเกจที่เรียกว่าสัตว์ที่ โดยทั่วไปใช้อักษรตัวพิมพ์เล็กเพื่อหลีกเลี่ยงการตั้งชื่อชั้นเรียนอินเตอร์เฟซและชื่อของความขัดแย้ง
เข้าร่วมกับสัตว์อินเตอร์เฟซแพคเกจ (Interface):
/* 文件名: Animal.java */ package animals; interface Animal { public void eat(); public void travel(); }
ถัดไปเพิ่มในแพ็กเกจเดิมที่ใช้อินเตอร์เฟซ:
package animals; /* 文件名 : 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(); } }
จากนั้นรวบรวมทั้งสองไฟล์และใส่ไว้ในไดเรกทอรีย่อยชื่อสัตว์ ใช้คำสั่งต่อไปนี้ในการทำงาน:
$ mkdir animals $ cp Animal.class MammalInt.class animals $ java animals/MammalInt Mammal eats Mammal travel
คำหลักที่นำเข้า
เพื่อให้สามารถใช้งานได้เป็นสมาชิกในแพคเกจที่เราต้องนำเข้าอย่างชัดเจนแพคเกจในโปรแกรม Java การใช้ "นำเข้า" คำสั่งให้ปฏิบัติหน้าที่นี้
ใน java งบนำเข้าแฟ้มแหล่งที่มาควรจะอยู่หลังจากคำสั่งแพคเกจเรียนที่กำหนดไว้ก่อนหน้านี้ทั้งหมดคุณไม่สามารถคุณยังสามารถมีหลายไวยากรณ์ที่เป็น:
import package1[.package2…].(classname|*);
ถ้าแพคเกจระดับที่คุณต้องการใช้แพคเกจนี้ในชั้นเรียนอื่นแล้วชื่อแพคเกจสามารถละเว้น
ตัวอย่าง
แพคเกจเงินเดือนต่อไปแล้วมีระดับของพนักงานแล้วเพิ่มระดับให้กับแพคเกจเงินเดือนบอส เมื่อเจ้านายของพนักงานระดับชั้นการอ้างอิงไม่สามารถใช้คำนำหน้ากรณีเงินเดือนระดับบอสดังต่อไปนี้
package payroll; public class Boss { public void payEmployee(Employee e) { e.mailCheck(); } }
เกิดอะไรขึ้นถ้าชั้นไม่ได้เป็นแพคเกจเงินเดือนบอสจะ? ระดับบอสต้องใช้วิธีใดวิธีหนึ่งดังต่อไปนี้เพื่ออ้างอิงชั้นเรียนอื่น ๆ ในแพคเกจ
ใช้ชื่อเต็มของคำอธิบายชั้นเรียนเช่น:
payroll.Employee
ด้วยการแนะนำของคำหลักที่นำเข้าให้ใช้สัญลักษณ์ "*"
import payroll.*;
ใช้คำแนะนำนำเข้าระดับพนักงาน
import payroll.Employee;
หมายเหตุ:
แฟ้มคลาสามารถมีจำนวนของการประกาศนำเข้าใด ๆ ประกาศนำเข้าจะต้องเป็นหลังจากคำสั่งแพคเกจก่อนการประกาศคลาส
โครงสร้างไดเรกทอรีแพคเกจ
ชั้นบนแพคเกจมีผลหลักที่สอง:
- ชื่อแพคเกจจะกลายเป็นส่วนหนึ่งของชื่อชั้นที่เรากล่าวก่อนหน้านี้
- ชื่อแพคเกจจะต้องตรงกับรหัสไบต์ที่สอดคล้องกันในการแข่งขันโครงสร้างไดเรกทอรีเดียวกัน
นี่เป็นวิธีที่ง่ายในการจัดการไฟล์ของคุณใน java:
เรียนอินเตอร์เฟซและประเภทอื่น ๆ ของรหัสที่มาในข้อความชื่อของไฟล์นี้เป็นชื่อของประเภทและขยาย .java ตัวอย่างเช่น:
// 文件名 : Car.java package vehicle; public class Car { // 类实现 }
ถัดไปไฟล์ที่มาในไดเรกทอรีชื่อไดเรกทอรีไปยังระดับที่สอดคล้องกันของแพคเกจของตัวเอง
....\vehicle\Car.java
ตอนนี้ชื่อชั้นที่ถูกต้องและเส้นทางจะมีลักษณะดังต่อไปนี้:
ชื่อคลาส -> vehicle.Car
ชื่อพา ธ -> รถ \ Car.java (ใน Windows)
โดยปกติแล้ว บริษัท จะใช้แบบฟอร์มกลับของชื่อโดเมนอินเทอร์เน็ตเป็นชื่อแพคเกจของตนตัวอย่างเช่น: โดเมนอินเทอร์เน็ตเป็น apple.com ทั้งหมดชื่อแพคเกจอยู่ในจุดเริ่มต้น com.apple ชื่อแต่ละแพคเกจที่สอดคล้องกับการเป็นส่วนหนึ่งของไดเรกทอรีย่อยที่
ตัวอย่างเช่น บริษัท มี com.apple.computers แพคเกจซึ่งมีแฟ้มแหล่งที่มารู้จักกัน Dell.java ที่สอดคล้องกันควรเป็นเช่นชุดต่อไปของไดเรกทอรีย่อย:
....\com\apple\computers\Dell.java
รวบรวมเวลาคอมไพเลอร์จะสร้างไฟล์ที่ส่งออกที่แตกต่างกันชื่อไฟล์ที่ส่งออกเป็นชื่อของประเภทนี้ถูกกำหนดไว้ในประเภทแพคเกจของแต่ละระดับอินเตอร์เฟซและเพิ่มเป็นคำต่อท้ายนามสกุล .class ตัวอย่างเช่น:
// 文件名: 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 \ คอมพิวเตอร์ \ ระดับที่กำหนดไว้ในอินเตอร์เฟซ:
import com.apple.computers.*;
.class ไฟล์รวบรวมหลังและควรไฟล์ที่มา .java พวกเขาจะอยู่ในไดเรกทอรีควรสอดคล้องกับชื่อของแพคเกจ แต่เส้นทางที่ไม่จำเป็นต้องใช้ไฟล์ .class มีเส้นทางที่สอดคล้องเดียวกัน .java คุณสามารถจัดเรียงแหล่งที่มาและแยกชั้นไดเรกทอรี
<path-one>\sources\com\apple\computers\Dell.java <path-two>\classes\com\apple\computers\Dell.class
ด้วยวิธีนี้คุณสามารถแบ่งปันไดเรกทอรีชั้นเรียนของคุณในการเขียนโปรแกรมอื่น ๆ มากกว่าการเปิดเผยแหล่งที่มาของพวกเขา ด้วยวิธีนี้ในการจัดการแหล่งที่มาและไฟล์ระดับสามารถให้คอมไพเลอร์และ Java เครื่องเสมือน (JVM) คุณสามารถค้นหาทุกประเภทที่ใช้ในโปรแกรม
แอบโซลูทคลาสเส้นทางไดเรกทอรีที่เรียกว่าเส้นทางการเรียน ตั้งอยู่ในระบบ CLASSPATH ตัวแปร คอมไพเลอร์และ Java เครื่องเสมือนโดยใช้ชื่อแพคเกจเพื่อเส้นทางการเรียนในภายหลังเส้นทางก่อสร้าง .class ไฟล์
<Path- สอง> \ Classes เป็นเส้นทางชั้นชื่อแพคเกจเป็น com.apple.computers และคอมไพเลอร์และ JVM จะอยู่ใน <เส้นทางสอง> \ Classes \ COM \ Apple \ compters พบไฟล์ .class
เส้นทางระดับอาจมีหลายเส้นทาง มีหลายเส้นทางที่ควรจะแยกออกจากตัวคั่น โดยค่าเริ่มต้นคอมไพเลอร์และ JVM พบไดเรกทอรีปัจจุบัน JAR ไฟล์ที่มีแพลตฟอร์ม Java ตามระดับที่เกี่ยวข้องเพื่อให้พวกเขาเริ่มต้นในไดเรกทอรีในเส้นทางชั้นเรียน
การตั้งค่าตัวแปรระบบ CLASSPATH
ใช้คำสั่งต่อไปนี้เพื่อแสดงตัวแปร CLASSPATH ปัจจุบัน:
- แพลตฟอร์ม Windows (บรรทัดคำสั่ง DOS) -> C: \> ตั้ง CLASSPATH
- ระบบปฏิบัติการยูนิกซ์ (บอร์นเปลือกใต้) ->% echo $ CLASSPATH
- แพลตฟอร์ม Windows (บรรทัดคำสั่ง DOS) -> C: \> ตั้ง CLASSPATH =
- ระบบปฏิบัติการยูนิกซ์ (บอร์นเปลือกใต้) ->% CLASSPATH ล้าง; CLASSPATH การส่งออก
การตั้งค่าตัวแปร CLASSPATH:
- แพลตฟอร์ม Windows (บรรทัดคำสั่ง DOS) -> ชุด CLASSPATH = C: \ Users \ แจ็ค \ Java \ Classes
- ระบบปฏิบัติการยูนิกซ์ (บอร์นเปลือกใต้) -> = / home / แจ็ค / java / คลาส% CLASSPATH; CLASSPATH การส่งออก