1. อินเทอร์เฟซ: "คลาสพิเศษ" ที่คลาสนามธรรมให้ละเอียดยิ่งขึ้นและสามารถมีวิธีการนามธรรมในอินเทอร์เฟซเท่านั้น อินเทอร์เฟซไม่สนใจเกี่ยวกับข้อมูลสถานะภายในของคลาสและกำหนดข้อกำหนดที่ชุดของคลาสสอดคล้องกับ (เพียงกำหนดว่าจะต้องมีวิธีการบางอย่างในชุดคลาสนี้และการจัดหาวิธีการเหล่านี้สามารถตอบสนองความต้องการที่แท้จริง)
ในภาษาการเขียนโปรแกรม Java มันเป็นประเภทนามธรรมคอลเลกชันของวิธีนามธรรมและอินเทอร์เฟซมักจะประกาศว่าเป็นอินเตอร์เฟส คลาสสืบทอดวิธีนามธรรมของอินเทอร์เฟซโดยสืบทอดอินเทอร์เฟซ
อินเทอร์เฟซไม่ใช่คลาสและวิธีการเขียนอินเทอร์เฟซนั้นคล้ายกับคลาส แต่เป็นแนวคิดที่แตกต่างกัน คลาสอธิบายคุณสมบัติและวิธีการของวัตถุ อินเทอร์เฟซมีวิธีการที่จะนำไปใช้โดยคลาส
เว้นแต่ว่าคลาสที่ใช้อินเทอร์เฟซเป็นคลาสนามธรรมคลาสจะกำหนดวิธีการทั้งหมดในอินเทอร์เฟซ
อินเทอร์เฟซไม่สามารถสร้างอินสแตนซ์ได้ แต่สามารถนำไปใช้ได้ คลาสที่ใช้อินเทอร์เฟซจะต้องใช้วิธีการทั้งหมดที่อธิบายไว้ในส่วนต่อประสานมิฉะนั้นจะต้องประกาศว่าเป็นคลาสนามธรรม นอกจากนี้ใน Java ประเภทอินเตอร์เฟสสามารถใช้เพื่อประกาศตัวแปรได้พวกเขาสามารถเป็นตัวชี้โมฆะหรือผูกกับวัตถุที่ใช้กับอินเทอร์เฟซนี้
คำจำกัดความ: [Modifier] ชื่ออินเตอร์เฟสอินเทอร์เฟซขยายอินเทอร์เฟซแม่ 1, อินเตอร์เฟสการกำหนด 2, ... // ไม่มีการขยายอินเทอร์เฟซพาเรนต์ 1 ... คือการกำหนดอินเทอร์เฟซ
-
// zero ถึงคำจำกัดความคงที่หลายคำว่า ...
// zero ถึงคำจำกัดความวิธีการอินสแตนซ์นามธรรมหลายครั้ง ...
-
[คำอธิบายไวยากรณ์]: 1. ตัวดัดแปลงสามารถสาธารณะหรือละเว้น หากละเว้นอักขระควบคุมการเข้าถึงสาธารณะจะได้รับอนุญาตการเข้าถึงแพ็คเกจ
2. สมาชิกทั้งหมดในอินเทอร์เฟซได้รับการแก้ไขสาธารณะเนื่องจากอินเทอร์เฟซเป็นแบบสาธารณะและสามารถเข้าถึงได้โดยทุกคลาส การปรับเปลี่ยนเริ่มต้นของแอตทริบิวต์ในอินเทอร์เฟซคือ: PublicStaticFinal ไม่ว่าจะเขียนแอตทริบิวต์หรือไม่ก็ตามการปรับเปลี่ยนเริ่มต้นของวิธีเดียวกันคือ: publicabstract, คลาสภายใน: publicstatic พวกเขาจะถูกเพิ่มโดยค่าเริ่มต้น
3. ไม่สามารถมีตัวสร้างในสมาชิกและไม่สามารถเริ่มต้นบล็อกการเริ่มต้นได้
4. ไฟล์แหล่ง Java สามารถกำหนดได้ที่อินเทอร์เฟซส่วนใหญ่เพียงครั้งเดียวเนื่องจากมีการแก้ไขสาธารณะและชื่อที่เก็บไว้จะต้องเหมือนกับชื่อของคลาสที่ได้รับการแก้ไขสาธารณะและอินเทอร์เฟซถือได้ว่าเป็นคลาสพิเศษ
2. การสืบทอดอินเตอร์เฟส: อินเทอร์เฟซสามารถมีอินเทอร์เฟซพาเรนต์โดยตรงหลายตัวและอินเทอร์เฟซสามารถสืบทอดอินเตอร์เฟสเท่านั้น แต่ไม่ใช่คลาส
[หมายเหตุ]: อินเทอร์เฟซเด็กสืบทอดอินเทอร์เฟซพาเรนต์และจะได้รับวิธีนามธรรมทั้งหมดแอตทริบิวต์คงที่คลาสภายในและคำจำกัดความอื่น ๆ ที่กำหนดไว้ในส่วนต่อประสานหลัก
3. การใช้งานอินเตอร์เฟส: ไวยากรณ์: [ตัวปรับเปลี่ยน] ชื่อคลาสคลาสขยายคลาสหลักใช้อินเทอร์เฟซ 1, อินเตอร์เฟส 2 ... {คลาสคลาส}
【ข้อควรระวัง】
. คำอธิบาย: คลาสสามารถสืบทอดคลาสพาเรนต์และหลายอินเทอร์เฟซในเวลาเดียวกัน แต่จะต้องมีการขยายหลังจากดำเนินการ
ข. อินเทอร์เฟซไม่สามารถสร้างอินสแตนซ์ได้ แต่สามารถประกาศตัวแปรได้ แต่ต้องอ้างถึงวัตถุของคลาสการใช้งาน
ค. วัตถุประสงค์หลักคือการดำเนินการโดยชั้นเรียน
d. วิธีการใช้งาน: ใช้คำหลัก
ก. หลังจากคลาสสืบทอดอินเทอร์เฟซมันจะต้องใช้วิธีนามธรรมทั้งหมดที่กำหนดไว้ในอินเทอร์เฟซเหล่านี้อย่างเต็มที่ (นั่นคือการเขียนวิธีคลาสเหล่านี้ใหม่ในคลาสย่อย) มิฉะนั้นหากยังไม่ได้ใช้งานอย่างสมบูรณ์คลาสนี้สามารถกำหนดเป็นคลาสนามธรรมเท่านั้น
f. เมื่อเอาชนะวิธีการอินเทอร์เฟซตัวดัดแปลงสามารถมีขนาดใหญ่กว่าหรือเท่ากับคลาสแม่เท่านั้นดังนั้นจึงต้องเป็นตัวดัดแปลงสาธารณะ
กรัม ตัวแปรประเภทอินเตอร์เฟสทั้งหมดสามารถกำหนดโดยตรงกับตัวแปรประเภทวัตถุ
โพสต์รหัสตัวอย่าง (อ้างถึง Java บ้าของ Li Gang):
// กำหนดอินเทอร์เฟซอินเทอร์เฟซเอาต์พุตเอาต์พุต {// แอตทริบิวต์สามารถกำหนดเป็นค่าคงที่ int max_cache_line = 50; // ส่วนใหญ่กำหนดพื้นที่จัดเก็บ // วิธีนามธรรมที่กำหนดไว้ในอินเตอร์เฟสสามารถเป็นโมฆะสาธารณะ (); โมฆะ getData (ผงชูรสสตริง); } // กำหนดผลิตภัณฑ์อินเทอร์เฟซอินเทอร์เฟซผลิตภัณฑ์ {int getProducetime (int a); } // ให้คลาสเครื่องพิมพ์ใช้งานเครื่องพิมพ์คลาสสาธารณะที่กำหนดให้ใช้เอาต์พุตผลิตภัณฑ์ {สตริงส่วนตัว [] printData = สตริงใหม่ [MAX_CACHE_LINE]; ข้อมูลส่วนตัว int datanum = 0; โมฆะสาธารณะ () // เขียนวิธีการส่งออกของอินเตอร์เฟสหลัก {ในขณะที่ (datanum> 0) {system.out.println ("พิมพ์พิมพ์"+printdata [0]); System.arrayCopy (printdata, 1, printdata, 0,-datanum); }} โมฆะสาธารณะ getData (String msg) // rewrite วิธีการส่งออกของอินเตอร์เฟสหลัก {ถ้า (datanum> = max_cache_line) {system.out.println ("เต็ม"); } else {printData [datanum ++] = msg; }} public int getProducetime (int a) // เขียนวิธีการของผลิตภัณฑ์อินเทอร์เฟซพาเรนต์ {return a = a; } โมฆะคงที่สาธารณะหลัก (สตริง [] args) {// อินเทอร์เฟซหลักสามารถประกาศตัวแปร แต่ไม่สามารถสร้างอินสแตนซ์, polymorphism: การประกาศเอาท์พุท แต่อินสแตนซ์ที่สร้างขึ้นคือเอาต์พุตเครื่องพิมพ์ o = เครื่องพิมพ์ใหม่ (); o.getData ("xiuxiu"); o.out (); // เรียกใช้วิธีการส่งออกโดยตรง // อินเทอร์เฟซหลักสามารถประกาศตัวแปรได้ แต่ไม่สามารถสร้างอินสแตนซ์, polymorphism: การประกาศเอาต์พุต แต่อินสแตนซ์ที่สร้างขึ้นคือผลิตภัณฑ์เครื่องพิมพ์ p = เครื่องพิมพ์ใหม่ (); System.out.println (P.GetProducetime (82)); // ตัวแปรอ้างอิงประเภทอินเตอร์เฟสทั้งหมดสามารถกำหนดโดยตรงกับตัวแปรประเภทวัตถุวัตถุ OBJ = P; วัตถุ obj1 = o; -4. ความเหมือนและความแตกต่างระหว่างคลาสนามธรรมและอินเทอร์เฟซ:
เดียวกัน:
1. ทั้งหมดเป็นวิธีนามธรรม
2. ไม่สามารถสร้างอินสแตนซ์ได้
3. คลาสย่อยจะต้องใช้วิธีการนามธรรมทั้งหมดภายในหลังจากสืบทอดพวกเขา หากพวกเขาไม่ได้ใช้งานอย่างเต็มที่คลาสสามารถกำหนดเป็นคลาสนามธรรมเท่านั้น
แตกต่าง:
1. สามารถมีวิธีนามธรรมในอินเทอร์เฟซและวิธีการทั่วไปในคลาสนามธรรม
2. แอตทริบิวต์ในคลาสอินเตอร์เฟสมีตัวดัดแปลง PublicStaticFinal โดยค่าเริ่มต้น แต่แอตทริบิวต์ในคลาสนามธรรมอาจเป็นเรื่องธรรมดา
3. อินเทอร์เฟซไม่มีบล็อกการเริ่มต้น แต่พบได้ในคลาสนามธรรม
4. อินเทอร์เฟซสามารถมีหลายอินเทอร์เฟซพาเรนต์ แต่คลาสนามธรรมสามารถมีคลาสพาเรนต์เดียวเท่านั้น
สรุป
ข้างต้นเป็นเรื่องเกี่ยวกับอินเทอร์เฟซและตัวอย่างการใช้งานใน Java ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน เพื่อนที่สนใจสามารถอ้างถึงหัวข้ออื่น ๆ ที่เกี่ยวข้องในเว็บไซต์นี้ต่อไป หากมีข้อบกพร่องใด ๆ โปรดฝากข้อความไว้เพื่อชี้ให้เห็น