ความแตกต่างระหว่างแพ็คเกจและอินเทอร์เฟซใน Java

ผู้เขียน: Laura McKinney
วันที่สร้าง: 2 เมษายน 2021
วันที่อัปเดต: 3 กรกฎาคม 2024
Anonim
Java Lock
วิดีโอ: Java Lock

เนื้อหา


แพคเกจและการเชื่อมต่อทั้งสองทำหน้าที่เป็นภาชนะ เนื้อหาในแพ็คเกจและอินเตอร์เฟสสามารถใช้งานได้โดยคลาสโดยการนำเข้าและนำไปใช้งานตามลำดับ ความแตกต่างพื้นฐานระหว่างแพคเกจและอินเทอร์เฟซคือแพคเกจประกอบด้วยกลุ่มของคลาสและอินเทอร์เฟซในขณะที่อินเทอร์เฟซประกอบด้วยวิธีการและเขตข้อมูล ลองศึกษาความแตกต่างอื่น ๆ ด้วยความช่วยเหลือของกราฟเปรียบเทียบ

  1. แผนภูมิเปรียบเทียบ
  2. คำนิยาม
  3. ความแตกต่างที่สำคัญ
  4. ข้อสรุป

แผนภูมิเปรียบเทียบ

พื้นฐานสำหรับการเปรียบเทียบแพคเกจอินเตอร์เฟซ
ขั้นพื้นฐานแพ็คเกจเป็นกลุ่มของคลาสและ / หรืออินเทอร์เฟซร่วมกันการเชื่อมต่อเป็นกลุ่มของวิธีการนามธรรมและเขตข้อมูลคงที่
คำหลักแพ็คเกจถูกสร้างขึ้นโดยใช้คำหลัก "แพ็คเกจ"อินเทอร์เฟซถูกสร้างขึ้นโดยใช้คำสำคัญ "อินเทอร์เฟซ"
วากยสัมพันธ์แพ็คเกจ package_name;
คลาสสาธารณะ class_name {
.
(ร่างของคลาส)
.
}
อินเตอร์เฟส interface_name {
การประกาศตัวแปร
การประกาศวิธีการ
}
ทางเข้าแพคเกจสามารถนำเข้า อินเทอร์เฟซสามารถขยายได้โดยอินเทอร์เฟซอื่นและนำไปใช้โดยคลาส
เข้าถึงคำสำคัญ แพคเกจสามารถนำเข้าโดยใช้คำหลัก "นำเข้า"การเชื่อมต่อสามารถนำมาใช้โดยใช้คำหลัก "ใช้งาน"


คำจำกัดความของแพ็คเกจ

แพ็คเกจเป็นการรวบรวมหรือกลุ่มของคลาสและอินเตอร์เฟสที่หลากหลาย คลาสในแพ็กเกจเกี่ยวข้องกันในขอบเขตหรือโดยการสืบทอด คุณสามารถสร้างแพ็คเกจและใช้สำหรับโปรแกรมของคุณได้

การสร้างแพ็คเกจ

สำหรับการสร้างแพ็คเกจให้ทำตามขั้นตอนต่อไปนี้

  1. เปิดไฟล์จากนั้นประกาศชื่อของแพ็กเกจที่ด้านบนของไฟล์เช่นชื่อแพ็กเกจคือชื่อที่คุณต้องการให้กับแพ็กเกจ
  2. ถัดไปคุณกำหนดคลาสที่คุณต้องการใส่ในแพ็คเกจและจำไว้ว่าคุณประกาศให้เป็นสาธารณะ
  3. บันทึกไฟล์เป็นไฟล์. java จากนั้นรวบรวมไฟล์จากนั้น” .class” จะได้รับสำหรับไฟล์นั้น
  4. ในการสร้างแพ็คเกจสำหรับไฟล์นี้คำสั่งที่ใช้คือ“ javac -d file_name.java คุณจะเห็นว่าแพ็คเกจนั้นสร้างขึ้นโดยมีไฟล์” .class” อยู่ในไดเรกทอรีปัจจุบัน หากต้องการวางไว้ในไดเรกทอรีหลักให้ใช้“ javac -d . คำสั่ง file_name.java”
  5. คุณยังสามารถสร้างแพ็คเกจย่อยได้โดยการประกาศชื่อแพ็คเกจย่อยตามที่ด้านบนของไฟล์

แพ็คเกจ 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” ได้รับการเริ่มต้นในอินเทอร์เฟซในเวลาที่ประกาศ วงกลมคลาสได้กำหนดวิธีนามธรรมของพื้นที่ชั้นเรียนตามความต้องการ

  1. แพคเกจคือกลุ่มของคลาสและอินเทอร์เฟซร่วมกันในขณะที่อินเทอร์เฟซเป็นกลุ่มของวิธีนามธรรม
  2. แพคเกจถูกสร้างขึ้นโดยใช้คำหลัก บรรจุภัณฑ์ ในขณะที่อินเทอร์เฟซถูกสร้างขึ้นโดยใช้คำสำคัญ อินเตอร์เฟซ.
  3. ถ้าคลาสหรืออินเทอร์เฟซภายในแพคเกจจะถูกใช้เป็น packageis ที่จะนำเข้าในขณะที่อินเทอร์เฟซจะต้องถูกนำมาใช้

สรุป:

ทั้งแพ็คเกจและส่วนต่อประสานเป็นภาชนะบรรจุ แพ็คเกจลดขนาดของรหัสในขณะที่เราเพิ่งนำเข้าคลาสเพื่อใช้แทนการกำหนดอีกครั้งในขณะที่อินเตอร์เฟสลดความสับสนที่เกิดขึ้นในขณะที่หลายสืบทอดเนื่องจากในกรณีของการสืบทอดหลายคลาสสืบทอดไม่ได้ตัดสินใจว่าคำนิยามของวิธีการที่มันควรจะสืบทอดแทนมันกำหนดของตัวเอง