ความแตกต่างระหว่าง Class และ Interface ใน Java
เนื้อหา
- แผนภูมิเปรียบเทียบ
- คำจำกัดความของ Class
- นิยามของอินเตอร์เฟส
- ความแตกต่างที่สำคัญระหว่างคลาสและอินเตอร์เฟสใน Java
- สรุป:
คลาสและส่วนต่อประสานทั้งสองถูกใช้เพื่อสร้างประเภทการอ้างอิงใหม่ คลาสคือชุดของเขตข้อมูลและวิธีการที่ทำงานบนเขตข้อมูล อินเทอร์เฟซมีวิธีการแบบนามธรรมอย่างสมบูรณ์เช่นวิธีการที่ไม่มีใครเลย อินเทอร์เฟซคล้ายกับคลาส syntactically แต่มีความแตกต่างที่สำคัญระหว่างคลาสและอินเทอร์เฟซที่เป็นคลาสที่สามารถสร้างอินสแตนซ์ได้ แต่อินเทอร์เฟซไม่สามารถอินสแตนซ์ ดังนั้นให้เราเรียนรู้ความแตกต่างระหว่างคลาสและอินเทอร์เฟซด้วยความช่วยเหลือของแผนภูมิเปรียบเทียบที่แสดงด้านล่าง
- แผนภูมิเปรียบเทียบ
- คำนิยาม
- ความแตกต่างที่สำคัญ
- ข้อสรุป
แผนภูมิเปรียบเทียบ
พื้นฐานสำหรับการเปรียบเทียบ | ชั้น | อินเตอร์เฟซ |
---|---|---|
ขั้นพื้นฐาน | คลาสถูกสร้างเป็นอินสแตนซ์เพื่อสร้างวัตถุ | ไม่สามารถอินเทอร์เฟซอินสแตนซ์ได้เนื่องจากวิธีการไม่สามารถดำเนินการใด ๆ กับการเรียกใช้ |
คำสำคัญ | ชั้น | อินเตอร์เฟซ |
ตัวระบุการเข้าถึง | สมาชิกของคลาสสามารถเป็นส่วนตัวเป็นสาธารณะหรือได้รับการคุ้มครอง | สมาชิกของอินเทอร์เฟซเปิดเผยต่อสาธารณะเสมอ |
วิธีการ | มีการกำหนดวิธีการเรียนเพื่อดำเนินการเฉพาะ | วิธีการในส่วนต่อประสานนั้นเป็นนามธรรมล้วนๆ |
Implement / ขยาย | คลาสสามารถใช้อินเตอร์เฟสจำนวนเท่าใดก็ได้และสามารถขยายคลาสได้เพียงคลาสเดียวเท่านั้น | อินเทอร์เฟซสามารถขยายหลายอินเทอร์เฟซ แต่ไม่สามารถใช้อินเทอร์เฟซใด ๆ |
นวกรรมิก | ชั้นสามารถมีตัวสร้างเพื่อเริ่มต้นตัวแปร | อินเทอร์เฟซไม่สามารถมีคอนสตรัคเตอร์ได้เนื่องจากแทบไม่มีตัวแปรใด ๆ ในการเริ่มต้น |
คำจำกัดความของ Class
คลาสเป็นส่วนที่สำคัญที่สุดของการเขียนโปรแกรม Java โดยไม่มีคลาสที่คุณไม่สามารถใช้โปรแกรม Java ได้ ชั้นสร้างประเภทการอ้างอิงและประเภทการอ้างอิงเหล่านี้จะใช้ในการสร้างวัตถุ คลาสมีลายเซ็นและเนื้อความ ลายเซ็นของคลาสมีชื่อและข้อมูลของคลาสที่บอกว่าคลาสนั้นได้รับคลาสอื่นแล้วหรือไม่ เนื้อความของคลาสมีเขตข้อมูลและวิธีการที่ทำงานบนเขตข้อมูลเหล่านั้น คลาสถูกสร้างขึ้นโดยใช้คำสำคัญ ชั้น. ให้เราดูวิธีการประกาศชั้นเรียน
คลาส class_name {/ * ฟิลด์ ... วิธีการ * /}
เมื่อคลาสนั้นสร้างอินสแตนซ์ของแต่ละวัตถุที่สร้างขึ้นจะมีสำเนาของเขตข้อมูลและวิธีการต่างๆ เขตข้อมูลและสมาชิกที่ประกาศภายในชั้นเรียนสามารถคงที่หรือไม่คงที่ ค่าสมาชิกคงเป็นค่าคงที่สำหรับแต่ละวัตถุในขณะที่สมาชิกไม่คงที่จะเริ่มต้นโดยแต่ละวัตถุแตกต่างกันตามความต้องการ
สมาชิกของคลาสมีตัวระบุการเข้าถึงที่ตัดสินใจการมองเห็นและการเข้าถึงของสมาชิกกับผู้ใช้หรือกับคลาสย่อย ตัวระบุการเข้าถึงเป็นสาธารณะส่วนตัวและได้รับการคุ้มครอง คลาสสามารถสืบทอดโดยคลาสอื่นโดยใช้ตัวระบุการเข้าถึงซึ่งจะตัดสินการมองเห็นของสมาชิกของซูเปอร์คลาส (คลาสที่สืบทอด) ในคลาสย่อย (คลาสที่สืบทอด) ดังนั้นคลาสจะตอบสนองแนวคิดของการซ่อนข้อมูลและการห่อหุ้มในการเขียนโปรแกรม Object Oriented
นิยามของอินเตอร์เฟส
อินเตอร์เฟสยังเป็นหนึ่งในประเภทการอ้างอิงที่กำหนดไว้ใน Java ความสำคัญของอินเทอร์เฟซคือใน Java คลาสสามารถสืบทอดคลาสเดียวเท่านั้น เพื่อหลีกเลี่ยงข้อ จำกัด นี้ผู้ออกแบบของ Java ได้แนะนำแนวคิดของอินเตอร์เฟส อินเทอร์เฟซคล้ายกับคลาส syntactically แต่มันไม่มีในการประกาศฟิลด์และวิธีการภายในอินเทอร์เฟซไม่มีการใช้งานใด ๆ อินเทอร์เฟซถูกประกาศโดยใช้คำสำคัญ อินเตอร์เฟซ. ให้เราดูการประกาศของอินเทอร์เฟซ
อินเตอร์เฟส interface_name {type var_name = value; พิมพ์ method1 (รายการพารามิเตอร์); พิมพ์ method2 (รายการพารามิเตอร์); . . }
อินเทอร์เฟซไม่ได้กำหนดวิธีการใด ๆ ที่ประกาศอยู่ข้างในเนื่องจากไม่มีเขตข้อมูลในการใช้งาน เพียงเพราะวิธีการใด ๆ ภายในอินเทอร์เฟซไม่ทำการกระทำใด ๆ อินเทอร์เฟซไม่สามารถถูกยกตัวอย่าง หากอินเทอร์เฟซมีสมาชิกของฟิลด์ใด ๆ นั้นจะต้องเริ่มต้นในเวลาที่ประกาศของพวกเขา อินเทอร์เฟซไม่เคยมีตัวสร้างใด ๆ เนื่องจากไม่มีสมาชิกภาคสนามในการเริ่มต้น ดังนั้นอินเตอร์เฟสจะกำหนดว่าคลาสจะต้องทำอย่างไรแทนที่จะต้องทำ
อินเทอร์เฟซที่สร้างขึ้นครั้งเดียวสามารถนำไปใช้กับคลาสจำนวนเท่าใดก็ได้โดยใช้คำหลัก การดำเนินการ. แต่คลาสที่ใช้อินเทอร์เฟซต้องกำหนดวิธีการทั้งหมดภายในอินเทอร์เฟซ อินเทอร์เฟซสามารถสืบทอดส่วนต่อประสานอื่นที่ใช้ ต่ออายุ คำสำคัญ. ถ้าคลาสใช้อินเทอร์เฟซที่ขยายอินเทอร์เฟซอื่น จากนั้นคลาสจะต้องกำหนดวิธีการของทั้งสองอินเตอร์เฟซที่ปรากฏในห่วงโซ่ เมธอดภายในอินเตอร์เฟสต้องเป็นพับลิกเสมอเนื่องจากคลาสเหล่านั้นต้องเข้าถึงได้โดยใช้คลาสนั้น
ความแตกต่างที่สำคัญระหว่างคลาสและอินเตอร์เฟสใน Java
- ชั้นสามารถสร้างอินสแตนซ์โดยการสร้างวัตถุ อินเทอร์เฟซไม่เคยเป็นอินสแตนซ์เนื่องจากวิธีการที่ประกาศภายในอินเทอร์เฟซเป็นนามธรรมและไม่ดำเนินการใด ๆ ดังนั้นจึงไม่มีการใช้อินสแตนซ์ของอินเทอร์เฟซใด ๆ
- มีการประกาศคลาสโดยใช้คลาสคำหลัก ในทำนองเดียวกันอินเทอร์เฟซถูกสร้างขึ้นโดยใช้อินเทอร์เฟซคำสำคัญ
- สมาชิกของคลาสสามารถมีตัวระบุการเข้าถึงเช่นสาธารณะส่วนตัวป้องกัน แต่สมาชิกของอินเทอร์เฟซจะเปิดเผยต่อสาธารณะเสมอเนื่องจากจะต้องเข้าถึงได้โดยคลาสที่ใช้งานพวกเขา
- มีการกำหนดวิธีการภายในคลาสเพื่อดำเนินการกับฟิลด์ที่ประกาศในคลาส เนื่องจากอินเตอร์เฟสขาดการประกาศฟิลด์วิธีการภายในอินเทอร์เฟซจึงเป็นนามธรรมล้วนๆ
- คลาสสามารถใช้อินเตอร์เฟสจำนวนเท่าใดก็ได้ แต่สามารถขยายคลาสซุปเปอร์เพียงหนึ่งคลาสเท่านั้น อินเทอร์เฟซสามารถขยายจำนวนของอินเทอร์เฟซใด ๆ แต่ไม่สามารถใช้อินเทอร์เฟซใด ๆ
- คลาสมีคอนสตรัคเตอร์ที่กำหนดไว้ภายในเพื่อรับค่าเริ่มต้นของตัวแปร แต่อินเทอร์เฟซไม่มีตัวสร้างใด ๆ เนื่องจากไม่มีเขตข้อมูลที่จะเริ่มต้น ฟิลด์ของอินเทอร์เฟซถูกเตรียมใช้งานในเวลาที่ประกาศเท่านั้น
สรุป:
ทั้งคลาสและส่วนต่อประสานมีความสำคัญของตัวเอง คลาสจะถูกใช้เมื่อเราจำเป็นต้องกำหนดวิธีการทำงาน อินเทอร์เฟซถูกใช้เมื่อเราจำเป็นต้องรู้ว่าจะต้องทำภารกิจอะไร