แผนภูมิเปรียบเทียบ
พื้นฐานสำหรับการเปรียบเทียบ | แพคเกจ | อินเตอร์เฟซ |
---|---|---|
ขั้นพื้นฐาน | แพ็คเกจเป็นกลุ่มของคลาสและ / หรืออินเทอร์เฟซร่วมกัน | การเชื่อมต่อเป็นกลุ่มของวิธีการนามธรรมและเขตข้อมูลคงที่ |
คำหลัก | แพ็คเกจถูกสร้างขึ้นโดยใช้คำหลัก "แพ็คเกจ" | อินเทอร์เฟซถูกสร้างขึ้นโดยใช้คีย์เวิร์ด "Interface" |
วากยสัมพันธ์ | แพ็คเกจ package_name; คลาสสาธารณะ class_name { . (ร่างของคลาส) . } | อินเตอร์เฟส interface_name { การประกาศตัวแปร การประกาศวิธีการ } |
ทางเข้า | แพคเกจสามารถนำเข้า | อินเทอร์เฟซสามารถขยายได้โดยอินเทอร์เฟซอื่นและนำไปใช้โดยคลาส |
เข้าถึงคำสำคัญ | แพคเกจสามารถนำเข้าโดยใช้คำหลัก "นำเข้า" | การเชื่อมต่อสามารถนำมาใช้โดยใช้คำหลัก "ใช้งาน" |
คำจำกัดความของแพ็คเกจ
แพ็คเกจเป็นการรวบรวมหรือกลุ่มของคลาสและอินเตอร์เฟสที่หลากหลาย คลาสในแพ็กเกจเกี่ยวข้องกันในขอบเขตหรือโดยการสืบทอด คุณสามารถสร้างแพ็คเกจและใช้สำหรับโปรแกรมของคุณได้
การสร้างแพ็คเกจ
สำหรับการสร้างแพ็คเกจให้ทำตามขั้นตอนต่อไปนี้
- เปิดไฟล์จากนั้นประกาศชื่อของแพ็คเกจที่ด้านบนของไฟล์เช่น [package package_name; ] ชื่อแพ็คเกจเป็นชื่อที่คุณต้องการให้กับแพคเกจ
- ถัดไปคุณกำหนดคลาสที่คุณต้องการใส่ในแพ็คเกจและจำไว้ว่าคุณประกาศให้เป็นสาธารณะ
- บันทึกไฟล์เป็นไฟล์. java จากนั้นรวบรวมไฟล์จากนั้น” .class” จะได้รับสำหรับไฟล์นั้น
- ในการสร้างแพ็คเกจสำหรับไฟล์นี้คำสั่งที่ใช้คือ“ javac -d file_name.java คุณสามารถเห็นได้ว่าแพ็คเกจนั้นสร้างขึ้นด้วยไฟล์” .class” ในไดเรกทอรีปัจจุบัน เพื่อวางไว้ในไดเรกทอรีหลักใช้“ javac -d . คำสั่ง file_name.java”
- คุณยังสามารถสร้างแพ็คเกจย่อยโดยการประกาศชื่อแพ็คเกจย่อยเป็น [แพ็คเกจแพ็คเกจ_name1 package_name2; ] ที่ด้านบนของไฟล์
แพ็คเกจ Mypackage; คลาส myclass สาธารณะ {โมฆะ public displayMypackage () {system.out.println ("เมธอด displayMypackage ของคลาส myclass ของแพ็กเกจ Mypackage"); }
ใช้แพ็คเกจ
แพคเกจที่สร้างขึ้นหรือมีอยู่ในไดเรกทอรีสามารถใช้ในโปรแกรมโดยใช้คำสั่งนำเข้าคำหลักที่ใช้เพื่อนำเข้าแพคเกจใด ๆ ในโปรแกรมของคุณคือ "นำเข้า" คำสั่งนำเข้าสามารถเขียนได้สองวิธีหรือคุณสามารถพูดได้ว่ามีสองวิธีในการเข้าถึงแพ็คเกจใด ๆ ก่อนอื่นถ้าคุณต้องการใช้คลาสเฉพาะจากแพ็คเกจคำสำคัญ "นำเข้า" จะตามด้วยชื่อแพ็กเกจเพิ่มเติมตามด้วยตัวดำเนินการ dot และชื่อคลาสที่คุณต้องการใช้จากแพ็คเกจ ข้อที่สองถ้าคุณต้องการใช้คลาสจำนวนมากที่มีอยู่ในแพ็คเกจแพ็กเกจคีย์เวิร์ดการนำเข้าจะตามด้วยชื่อแพ็กเกจเพิ่มเติมตามด้วยตัวดำเนินการ dot และ” *”
นำเข้า package_name class_name; หรือนำเข้า package_name *;
ในโค้ดด้านบนคุณสามารถเห็นเครื่องหมาย * ซึ่งระบุว่าวิธีที่สองนำเข้าคลาสทั้งหมดที่มีอยู่ในแพ็คเกจ
ทีนี้มาดูการใช้แพ็คเกจพร้อมตัวอย่าง
นำเข้า Mypackage myclass {คลาส TestMypackage {โมฆะสแตติกสาธารณะหลัก (สตริง args []) {myclass ob1 = new myclass (); ob1.displayMypackage (); }} // วิธีการส่งออก displayMypackage ของคลาส myclass ของแพ็กเกจ Mypackage
ในโค้ดด้านบนคลาส TestMypackage ได้อิมพอร์ตแพ็กเกจ Mypackage และใช้เมธอด displayMypackage ()
นิยามของอินเตอร์เฟส
อินเทอร์เฟซเป็นชนิดของคลาส แต่แตกต่างกันในแง่ที่ว่าวิธีการประกาศในอินเทอร์เฟซเป็นนามธรรมซึ่งหมายความว่าวิธีการประกาศเท่านั้น แต่ไม่ได้กำหนดไว้ เขตข้อมูลในอินเทอร์เฟซจะเป็นสาธารณะคงที่เป็นที่สิ้นสุดเสมอ ฟิลด์จะต้องเริ่มต้นในเวลาที่ประกาศ วิธีการประกาศโดยอินเทอร์เฟซถูกกำหนดโดยคลาสที่ใช้อินเทอร์เฟซนั้นตามความต้องการ เนื่องจากเมธอดในอินเตอร์เฟสไม่ได้ทำหน้าที่ใด ๆ ดังนั้นจึงไม่มีประโยชน์ในการสร้างวัตถุใด ๆ ของอินเตอร์เฟส ดังนั้นจึงไม่สามารถสร้างวัตถุสำหรับส่วนต่อประสาน
อินเทอร์เฟซสามารถสืบทอดอินเทอร์เฟซอื่น แต่คลาสที่สืบทอดอินเทอร์เฟซดังกล่าวต้องใช้วิธีการทั้งหมดของอินเทอร์เฟซที่สืบทอด เนื่องจากฟิลด์จะถูกเตรียมใช้งานในเวลาที่ประกาศในอินเทอร์เฟซดังนั้นจึงไม่จำเป็นต้องมีคอนสตรัคเตอร์ในอินเทอร์เฟซดังนั้นอินเตอร์เฟสจึงไม่มีตัวสร้างใด ๆ เรามาดูตัวอย่างของการสร้างและใช้งานอินเตอร์เฟส
ส่วนต่อประสาน {float pi = 3.14; float find_area (float a, float b) {} class Circle ใช้พื้นที่ {float find_area (float a, float b) {return (pi * a * a); } รูปร่างคลาส {โมฆะสาธารณะคงที่หลัก (สตริง args []) {พื้นที่ A = พื้นที่ใหม่ (); Circle C = วงกลมใหม่ (); A = C; float F = พื้นที่ find_area (10, 10); system.out.println ("พื้นที่ของวงกลมคือ:" + F); }
ในโค้ดด้านบนเราได้สร้างพื้นที่อินเทอร์เฟซและคลาสของวงกลมได้ใช้พื้นที่อินเทอร์เฟซ ฟิลด์“ pi” ได้รับการเริ่มต้นในอินเทอร์เฟซในเวลาที่ประกาศ Circle class ได้กำหนดวิธีนามธรรมของพื้นที่คลาสตามความต้องการ
ความแตกต่างที่สำคัญระหว่างแพ็คเกจและส่วนต่อประสานใน Java
- แพคเกจคือกลุ่มของคลาสและอินเทอร์เฟซเข้าด้วยกันในขณะที่อินเทอร์เฟซเป็นกลุ่มของวิธีนามธรรม
- แพคเกจถูกสร้างขึ้นโดยใช้ แพคเกจ คำหลักในขณะที่อินเทอร์เฟซถูกสร้างขึ้นโดยใช้ อินเทอร์เฟซ คำหลัก
- ถ้าคลาสหรืออินเทอร์เฟซภายในแพคเกจจะถูกใช้เป็น packageis ที่จะนำเข้าในขณะที่อินเทอร์เฟซจะต้องถูกนำมาใช้
สรุป:
ทั้งแพ็คเกจและส่วนต่อประสานเป็นภาชนะบรรจุ แพ็คเกจลดขนาดของรหัสในขณะที่เราเพิ่งนำเข้าคลาสเพื่อใช้แทนการกำหนดอีกครั้ง ในขณะที่อินเตอร์เฟสลดความสับสนที่เกิดขึ้นในขณะที่หลายสืบทอดเนื่องจากในกรณีของการสืบทอดหลายคลาสสืบทอดไม่ได้ตัดสินใจว่าคำนิยามของวิธีการที่มันควรจะสืบทอดแทนมันกำหนดของตัวเอง