เราได้เขียนโปรแกรม Java บางโปรแกรม โปรแกรม Java ก่อนหน้านี้ทุกโปรแกรมจะถูกบันทึกเป็นไฟล์ เช่น Test.java จากนั้นจึงคอมไพล์โปรแกรมเป็น Test.class สุดท้ายเราใช้ $java Test เพื่อรันโปรแกรม
อย่างไรก็ตาม ในโปรเจ็กต์ Java ปกติ เรามักจะจำเป็นต้องเขียนโปรแกรม .java มากกว่าหนึ่งโปรแกรม และผลิตภัณฑ์ Java สุดท้ายจะรวมโปรแกรม Java ทั้งหมดด้วย ดังนั้น Java จึงต้องแก้ไขปัญหาการจัดโปรแกรม Java วัตถุประสงค์ของแพ็คเกจคือเพื่อจัดระเบียบโปรแกรม Java ให้ดีขึ้น
การสร้างแพ็คเกจ
การสร้างแพ็คเกจนั้นง่ายมาก เราจำเป็นต้องเพิ่มแพ็คเกจที่จุดเริ่มต้นของโปรแกรม Java เท่านั้น ลองใช้คลาส Human เป็นตัวอย่างและใส่ลงในแพ็คเกจ:
คัดลอกรหัสรหัสดังต่อไปนี้:
แพ็คเกจ com.vamei.society;
มนุษย์ชนชั้นสาธารณะ
-
-
* ตัวสร้าง
-
มนุษย์สาธารณะ(int h)
-
นี่.ความสูง = h;
System.out.println("ฉันเกิด");
-
-
*อุปกรณ์เสริม
-
สาธารณะ int getHeight()
-
กลับ this.height;
-
-
* มิวเทเตอร์
-
โมฆะสาธารณะ growHeight (int h)
-
this.height = this.height + h;
-
ความสูง int ส่วนตัว
-
รหัสสำหรับการคัดลอกคำสั่งบรรทัดแรกข้างต้นมีดังนี้:
แพ็คเกจ com.vamei.society;
แสดงว่าโปรแกรมอยู่ในแพ็คเกจ com.vamei.society com.vamei (ด้านหลังของ vamei.com) หมายถึงชื่อโดเมนของผู้เขียนแพ็คเกจ (น่าเสียดายที่ชื่อโดเมนนี้ได้รับการจดทะเบียนโดยบุคคลอื่น ดังนั้นจึงใช้เพื่อวัตถุประสงค์ในการสาธิตเท่านั้น) Java ต้องการให้แพ็คเกจต้องมีคำนำหน้าชื่อโดเมนเพื่อแยกแยะผู้เขียนที่แตกต่างกัน Society เป็นชื่อเส้นทางท้องถิ่นเพิ่มเติม com.vamei.society ร่วมกันสร้างชื่อแพ็คเกจ
แพ็คเกจจัดเตรียมพื้นที่ชื่อสำหรับโปรแกรม Java เส้นทางแบบเต็มของคลาส Java ประกอบด้วยแพ็กเกจและชื่อคลาส เช่น com.vamei.society.Human โปรแกรม Human.java ที่เกี่ยวข้องควรอยู่ภายใต้ com/vamei/society/ คลาสต่างๆ จะถูกระบุด้วยพาธแบบเต็ม ดังนั้นคุณจึงสามารถมีคลาสที่มีชื่อเดียวกันในแพ็คเกจต่างๆ ได้โดยที่ Java ไม่สับสน ตัวอย่างเช่น com.vamei.society.Human และ com.vamei.creature.Human เป็นสองคลาสที่แตกต่างกัน
ลองดูรายละเอียดอีกประการหนึ่ง คลาส Human เป็นแบบสาธารณะ และ Constructor ของคลาสนั้นเป็นแบบสาธารณะ ดังนั้นอ็อบเจ็กต์อื่น ๆ จึงสามารถเรียกคลาสนี้ได้ ดังที่เราได้กล่าวไว้ก่อนหน้านี้ ในไฟล์ Java สามารถมีคลาสสาธารณะได้เพียงคลาสเดียวเท่านั้น และคลาสนั้นจะต้องมีชื่อเดียวกันกับไฟล์ .java คลาสไม่ต้องการคำสำคัญสาธารณะซึ่งจริงๆ แล้วแสดงถึงการอนุญาต: คลาสนั้นสามารถมองเห็นได้ในแพ็คเกจที่คลาสนั้นตั้งอยู่ นั่นคือโปรแกรม Java อื่นๆ ในแพ็กเกจสามารถเข้าถึงคลาสได้ นี่คือการเข้าถึงเริ่มต้นใน Java
ในทำนองเดียวกัน สมาชิกของอ็อบเจ็กต์ยังสามารถมีสิทธิ์เริ่มต้นได้ (มองเห็นได้ในแพ็คเกจ) ตัวอย่างเช่น เราลบคีย์เวิร์ดสาธารณะที่อยู่หน้าเมธอด getHeight()
โทรแพ็คเกจ
เราเพียงแต่ต้องใส่ Human.class ที่คอมไพล์โดย Human.java ลงในโฟลเดอร์ที่เกี่ยวข้อง ตัวอย่างเช่น ฉันใส่ Human.class ลงใน com/vamei/society/ ในความเป็นจริง คุณยังสามารถใส่ไฟล์ .java ลงในพาธที่เกี่ยวข้องได้ และ Java จะถูกคอมไพล์โดยอัตโนมัติเมื่อใช้
หากแพ็คเกจทั้งหมด (นั่นคือ โฟลเดอร์ com) อยู่ในพาธการทำงานปัจจุบัน ก็ไม่จำเป็นต้องมีการตั้งค่าพิเศษเพื่อใช้แพ็คเกจ เช่น TestAgain.java ต่อไปนี้:
คัดลอกรหัสรหัสดังต่อไปนี้:
นำเข้า com.vamei.society.*;
TestAgain ชั้นเรียนสาธารณะ
-
โมฆะสาธารณะคง main (String [] args)
-
Human aPerson = มนุษย์ใหม่ (180);
System.out.println(aPerson.getHeight());
-
-
การนำเข้าใช้เพื่อระบุเส้นทาง การใช้คำสั่งนำเข้าเราสามารถแนะนำคลาสภายใต้เส้นทางที่เกี่ยวข้องได้ *ระบุถึงการแนะนำคลาสทั้งหมดในโฟลเดอร์สังคม ใน TestAgain เราใช้คลาส Human โดยตรง
เรายังจัดเตรียมเส้นทางแบบเต็มไปยังชั้นเรียนได้ด้วย ซึ่งสามารถแยกแยะความแตกต่างระหว่างคลาสที่มีชื่อเดียวกันแต่มีพาธต่างกัน เช่น:
คัดลอกรหัสรหัสดังต่อไปนี้:
TestAgain ชั้นเรียนสาธารณะ
-
โมฆะสาธารณะคง main (String [] args)
-
com.vamei.society.Human aPerson =
ใหม่ com.vamei.society.Human(180);
System.out.println(aPerson.getHeight());
-
-
เนื่องจากเราจัดเตรียม classpath ที่สมบูรณ์ไว้แล้ว จึงไม่จำเป็นต้องใช้คำสั่ง import
หากแพ็คเกจไม่อยู่ในเส้นทางการทำงานปัจจุบัน เราจำเป็นต้องแจ้ง Java เมื่อใช้แพ็คเกจ ตัวอย่างเช่น เราใส่แพ็คเกจใน /home/vamei/javapackage เพื่อให้ Human.class อยู่ใน /home/vamei/javapackage/com/vamei/society/Human.class และเส้นทางการทำงานของเราคือ /home/vamei ด้วยวิธีนี้ ไม่พบแพ็คเกจ วิธีหนึ่งคือใช้ -classpath เพื่อระบุพาธโฟลเดอร์ที่แพ็กเกจตั้งอยู่เมื่อใช้ javac และ java ตัวอย่างเช่น:
คัดลอกรหัสรหัสดังต่อไปนี้:
$javac -classpath /home/vamei/javapackage:. TestAgain.java
$java -classpath /home/vamei/javapackage:
เพียงมองหาแพ็คเกจจาก /home/vamei/javapackage และเส้นทางการทำงาน (.) Java สามารถค้นหาคลาส Human จาก /home/vamei/javapackage และคลาส TestAgain จาก .
นอกจากนี้ คุณยังสามารถตั้งค่าตัวแปรสภาพแวดล้อม CLASSPATH ของระบบ และเพิ่มพาธด้านบนให้กับตัวแปรโดยไม่ต้องพิมพ์อ็อพชัน -classpath ทุกครั้ง
กลไกที่คล้ายกับแพ็คเกจก็พบได้ทั่วไปในภาษาอื่น เช่น กลไกการนำเข้าใน Python ทั้งหมดนี้เกี่ยวกับการจัดระเบียบและการใช้โปรแกรมที่มีอยู่ให้ดีขึ้น การใช้แพ็คเกจทำให้เราสามารถขยายโปรแกรม Java และใช้ไลบรารีโปรแกรม Java ที่มีอยู่ได้อย่างง่ายดาย โปรดสังเกตว่าแพ็คเกจจัดการไฟล์ .class Java รู้จักกันในชื่อ "คอมไพล์ครั้งเดียวรันได้ทุกที่" (คอมไพล์ครั้งเดียวรันได้ทุกที่) ไฟล์ .class สามารถทำงานบนแพลตฟอร์มใดๆ ที่ติดตั้ง Java Virtual Machine (JVM, Java Virtual Machine) ซึ่งช่วยให้เราเอาชนะปัญหาในการย้ายโปรแกรมที่เกิดจากความแตกต่างของระบบ
ความแตกต่างระหว่างระบบอาจมีขนาดใหญ่มาก หากเราเขียนโปรแกรมในภาษา C โปรแกรมต้นฉบับจะต้องได้รับการคอมไพล์ใหม่ในแต่ละแพลตฟอร์มเพื่อปรับให้เข้ากับสภาพฮาร์ดแวร์ที่แตกต่างกัน เครื่องเสมือน Java เชื่อมต่อแพลตฟอร์มกับจักรวาล Java และจะสร้างชั้นกลางระหว่างฮาร์ดแวร์และตรรกะการเขียนโปรแกรม JVM ซ่อนความแตกต่างของฮาร์ดแวร์และให้โปรแกรมเมอร์มีจักรวาล Java "มาตรฐาน" ไฟล์ .class ถือได้ว่าเป็นสกุลเงินที่หมุนเวียนในจักรวาล Java นี้ ด้วยโครงสร้างพื้นฐาน JVM และความช่วยเหลือในการจัดการแพ็คเกจ โปรแกรม Java จึงสามารถพกพาได้ดี
สรุป
แพ็คเก็จ,นำเข้า
การอนุญาตเริ่มต้น: มองเห็นได้ในแพ็คเกจ
-คลาสพาธ คลาสพาธ