ความแตกต่างระหว่างแพ็คเกจและอินเทอร์เฟซใน Java
![Java Lock](https://i.ytimg.com/vi/MWlqrLiscjQ/hqdefault.jpg)
เนื้อหา
แพคเกจและการเชื่อมต่อทั้งสองทำหน้าที่เป็นภาชนะ เนื้อหาในแพ็คเกจและอินเตอร์เฟสสามารถใช้งานได้โดยคลาสโดยการนำเข้าและนำไปใช้งานตามลำดับ ความแตกต่างพื้นฐานระหว่างแพคเกจและอินเทอร์เฟซคือแพคเกจประกอบด้วยกลุ่มของคลาสและอินเทอร์เฟซในขณะที่อินเทอร์เฟซประกอบด้วยวิธีการและเขตข้อมูล ลองศึกษาความแตกต่างอื่น ๆ ด้วยความช่วยเหลือของกราฟเปรียบเทียบ
- แผนภูมิเปรียบเทียบ
- คำนิยาม
- ความแตกต่างที่สำคัญ
- ข้อสรุป
แผนภูมิเปรียบเทียบ
พื้นฐานสำหรับการเปรียบเทียบ | แพคเกจ | อินเตอร์เฟซ |
---|---|---|
ขั้นพื้นฐาน | แพ็คเกจเป็นกลุ่มของคลาสและ / หรืออินเทอร์เฟซร่วมกัน | การเชื่อมต่อเป็นกลุ่มของวิธีการนามธรรมและเขตข้อมูลคงที่ |
คำหลัก | แพ็คเกจถูกสร้างขึ้นโดยใช้คำหลัก "แพ็คเกจ" | อินเทอร์เฟซถูกสร้างขึ้นโดยใช้คำสำคัญ "อินเทอร์เฟซ" |
วากยสัมพันธ์ | แพ็คเกจ package_name; คลาสสาธารณะ class_name { . (ร่างของคลาส) . } | อินเตอร์เฟส interface_name { การประกาศตัวแปร การประกาศวิธีการ } |
ทางเข้า | แพคเกจสามารถนำเข้า | อินเทอร์เฟซสามารถขยายได้โดยอินเทอร์เฟซอื่นและนำไปใช้โดยคลาส |
เข้าถึงคำสำคัญ | แพคเกจสามารถนำเข้าโดยใช้คำหลัก "นำเข้า" | การเชื่อมต่อสามารถนำมาใช้โดยใช้คำหลัก "ใช้งาน" |
คำจำกัดความของแพ็คเกจ
แพ็คเกจเป็นการรวบรวมหรือกลุ่มของคลาสและอินเตอร์เฟสที่หลากหลาย คลาสในแพ็กเกจเกี่ยวข้องกันในขอบเขตหรือโดยการสืบทอด คุณสามารถสร้างแพ็คเกจและใช้สำหรับโปรแกรมของคุณได้
การสร้างแพ็คเกจ
สำหรับการสร้างแพ็คเกจให้ทำตามขั้นตอนต่อไปนี้
- เปิดไฟล์จากนั้นประกาศชื่อของแพ็กเกจที่ด้านบนของไฟล์เช่นชื่อแพ็กเกจคือชื่อที่คุณต้องการให้กับแพ็กเกจ
- ถัดไปคุณกำหนดคลาสที่คุณต้องการใส่ในแพ็คเกจและจำไว้ว่าคุณประกาศให้เป็นสาธารณะ
- บันทึกไฟล์เป็นไฟล์. java จากนั้นรวบรวมไฟล์จากนั้น” .class” จะได้รับสำหรับไฟล์นั้น
- ในการสร้างแพ็คเกจสำหรับไฟล์นี้คำสั่งที่ใช้คือ“ javac -d file_name.java คุณจะเห็นว่าแพ็คเกจนั้นสร้างขึ้นโดยมีไฟล์” .class” อยู่ในไดเรกทอรีปัจจุบัน หากต้องการวางไว้ในไดเรกทอรีหลักให้ใช้“ javac -d . คำสั่ง file_name.java”
- คุณยังสามารถสร้างแพ็คเกจย่อยได้โดยการประกาศชื่อแพ็คเกจย่อยตามที่ด้านบนของไฟล์
แพ็คเกจ Mypackage; คลาส myclass สาธารณะ {โมฆะ public displayMypackage () {system.out.ln ("เมธอด displayMypackage ของคลาส myclass ของแพ็กเกจ Mypackage"); }
ใช้แพ็คเกจ
แพคเกจที่สร้างขึ้นหรือมีอยู่ในไดเรกทอรีสามารถใช้ในโปรแกรมโดยใช้คำสั่งนำเข้าคำหลักที่ใช้เพื่อนำเข้าแพคเกจใด ๆ ในโปรแกรมของคุณคือ "นำเข้า" คำสั่งนำเข้าสามารถเขียนได้สองวิธีหรือคุณสามารถพูดได้ว่ามีสองวิธีในการเข้าถึงแพ็คเกจใด ๆ ก่อนอื่นถ้าคุณต้องการใช้คลาสเฉพาะจากแพ็คเกจคำสำคัญ "นำเข้า" จะตามด้วยชื่อแพ็กเกจเพิ่มเติมตามด้วยตัวดำเนินการ dot และชื่อคลาสที่คุณต้องการใช้จากแพ็คเกจ ประการที่สองหากคุณต้องการใช้คลาสจำนวนมากที่มีอยู่ในแพ็คเกจแพ็กเกจคีย์เวิร์ดการอิมพอร์ตจะตามด้วยชื่อแพ็กเกจเพิ่มเติมตามด้วยตัวดำเนินการ dot และ” *”
นำเข้า package_name class_name; หรือนำเข้า package_name *;
ในโค้ดด้านบนคุณสามารถเห็นเครื่องหมาย * ซึ่งระบุว่าวิธีที่สองนำเข้าคลาสทั้งหมดที่มีอยู่ในแพ็คเกจ
ทีนี้มาดูการใช้แพ็คเกจพร้อมตัวอย่าง
นำเข้า Mypackage myclass {คลาส TestMypackage {โมฆะสาธารณะแบบคงที่ main (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.ln ("พื้นที่ของวงกลมคือ:" + F); }
ในโค้ดด้านบนเราได้สร้างพื้นที่ส่วนต่อประสานและวงกลมของคลาสได้ใช้พื้นที่ส่วนต่อประสาน ฟิลด์“ pi” ได้รับการเริ่มต้นในอินเทอร์เฟซในเวลาที่ประกาศ วงกลมคลาสได้กำหนดวิธีนามธรรมของพื้นที่ชั้นเรียนตามความต้องการ
- แพคเกจคือกลุ่มของคลาสและอินเทอร์เฟซร่วมกันในขณะที่อินเทอร์เฟซเป็นกลุ่มของวิธีนามธรรม
- แพคเกจถูกสร้างขึ้นโดยใช้คำหลัก บรรจุภัณฑ์ ในขณะที่อินเทอร์เฟซถูกสร้างขึ้นโดยใช้คำสำคัญ อินเตอร์เฟซ.
- ถ้าคลาสหรืออินเทอร์เฟซภายในแพคเกจจะถูกใช้เป็น packageis ที่จะนำเข้าในขณะที่อินเทอร์เฟซจะต้องถูกนำมาใช้
สรุป:
ทั้งแพ็คเกจและส่วนต่อประสานเป็นภาชนะบรรจุ แพ็คเกจลดขนาดของรหัสในขณะที่เราเพิ่งนำเข้าคลาสเพื่อใช้แทนการกำหนดอีกครั้งในขณะที่อินเตอร์เฟสลดความสับสนที่เกิดขึ้นในขณะที่หลายสืบทอดเนื่องจากในกรณีของการสืบทอดหลายคลาสสืบทอดไม่ได้ตัดสินใจว่าคำนิยามของวิธีการที่มันควรจะสืบทอดแทนมันกำหนดของตัวเอง