อ่าน 2 นาที
อินเทอร์เฟซ (การเขียนโปรแกรมเชิงวัตถุ)
ใน การเขียนโปรแกรมเชิงวัตถุ อิน เทอร์เฟซ หรือประเภท โปรโตคอล [ a ] เป็น ประเภทข้อมูล ที่ทำหน้าที่เป็น นามธรรม ของ คลาส โดยจะอธิบายชุดของ ลายเซ็นเมธอด...
อินเทอร์เฟซ (การเขียนโปรแกรมเชิงวัตถุ)
ในการเขียนโปรแกรมเชิงวัตถุ อินเทอร์เฟซหรือประเภทโปรโตคอล[ a ]เป็นประเภทข้อมูลที่ทำหน้าที่เป็นนามธรรมของคลาสโดยจะอธิบายชุดของลายเซ็นเมธอดซึ่งการใช้งานอาจจัดทำโดยคลาสหลายคลาสที่ไม่จำเป็นต้องมีความสัมพันธ์กัน[ 1 ]คลาสที่จัดเตรียมเมธอดที่ระบุไว้ในอินเทอร์เฟซจะเรียกว่าใช้งานอินเทอร์เฟซ[ 1 ]หรือใช้โปรโตคอล[ 2 ]
อินเทอร์เฟซมีประโยชน์สำหรับการห่อหุ้มและลดการเชื่อมโยงตัวอย่างเช่น ในภาษา Javaอินjava.lang.Comparable<T>เทอร์เฟซจะระบุเมธอดcompareTo()ดังนั้น เมธอดการเรียงลำดับจึงต้องการเพียงรับอ็อบเจ็กต์ของประเภทที่ใช้งานอินjava.lang.Comparable<T>เทอร์เฟซเพื่อเรียงลำดับ โดยไม่ต้องรู้เกี่ยวกับลักษณะภายในของคลาส (ยกเว้นว่าสามารถเปรียบเทียบอ็อบเจ็กต์สองตัวนี้ได้ผ่านทางcompareTo())
ตัวอย่าง
ภาษาโปรแกรมบาง ภาษา มีการรองรับอินเทอร์เฟซอย่างชัดเจน เช่นAda , C# , D , Dart , Delphi , Go , Java , Logtalk , Object Pascal , Objective-C , OCaml , PHP , Racket , SwiftและPython 3.8 ในภาษาที่รองรับการสืบทอดแบบหลายทางเช่นC++อินเทอร์เฟซจะเป็นคลาสแบบนามธรรม
ในภาษา Java การใช้งานอินเทอร์เฟซอาจมีลักษณะดังนี้:
คลาสAnimal { ... } คลาสTheropod สืบทอดมาจากAnimal { ... }อินเทอร์เฟซFlyable { void fly (); }อินเทอร์เฟซVocal { void vocalize (); }public class Bird extends Theropod implements Flyable , Vocal { // ... public void fly () { ... } public void vocalize () { ... } }ในภาษาที่ไม่มีการสนับสนุนอย่างชัดเจน อินเทอร์เฟซมักจะยังคงมีอยู่ตามข้อตกลง ซึ่งเรียกว่าduck typingตัวอย่างเช่น ในPythonคลาสใดๆ ก็สามารถใช้งาน__iter__เมธอดและใช้เป็นiterable ได้ [ 3 ] คลาสยังสามารถสืบทอดคลาสย่อยของABC ได้ อย่างชัดเจน เช่นcollections.abc.Iterable
คลาสประเภทในภาษาโปรแกรมอย่างHaskellหรือลายเซ็นโมดูลในMLและOCamlถูกนำมาใช้เพื่อวัตถุประสงค์หลายอย่างเช่นเดียวกับอินเทอร์เฟซ
ในRustอินเทอร์เฟซเรียกว่าtrait [ 4 ] ใน Rust อินเทอร์เฟซstructไม่มีเมธอด แต่สามารถเพิ่มเมธอดผ่านimplบล็อกแยกต่างหากได้
ลักษณะสัตว์เลี้ยง{ fn speak ( & self ); }struct Dog { // โครงสร้างข้อมูลจะมีเฉพาะฟิลด์name : String }impl Dog { // ไม่ได้มาจาก trait fn new ( name : String ) -> Self { Dog { name } } }impl Pet for Dog { // จาก trait fn speak ( & self ) { println! ( "{} says 'Woof!'" , self . name ); } }fn main () { let dog = Dog :: new ( String :: from ( "Arlo" )); dog . speak (); }ในภาษา C++ มีหลายวิธีในการสร้างอินเทอร์เฟซ วิธีหนึ่งคืออินเทอร์เฟซแบบ Java ซึ่งทำโดยใช้คลาสแบบนามธรรม อีกวิธีหนึ่งซึ่งคล้ายกับอินเทอร์เฟซในภาษา Go คือการใช้แนวคิดต่างจากการสืบทอด แนวคิดนั้นอนุญาตให้ประเภทใดก็ได้ (ไม่ใช่แค่คลาส) ตรงตามข้อกำหนดทั้งหมดของแนวคิดนั้น
ดูเพิ่มเติม
- อินเทอร์เฟซ (การคำนวณ)
- โปรโตคอลใน Objective-C
- อินเทอร์เฟซ (Java)
- แนวคิด (การเขียนโปรแกรมทั่วไป)
- การมอบหมายงาน (การเขียนโปรแกรม)
- วิชา (วิทยาการคอมพิวเตอร์)
- อินเทอร์เฟซการเขียนโปรแกรมแอปพลิเคชัน
หมายเหตุ
- ^การใช้คำศัพท์เหล่านี้แตกต่างกันไปตามภาษาโปรแกรม ภาษา Java และภาษาที่พัฒนาต่อยอดจาก Java มักใช้คำว่า interfaceในขณะที่คำว่า protocolนิยมใช้มากกว่าในภาษาอื่นๆ
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ อินเทอร์เฟซ (การเขียนโปรแกรมเชิงวัตถุ)
ใน การเขียนโปรแกรมเชิงวัตถุ อิน เทอร์เฟซ หรือประเภท โปรโตคอล [ a ] เป็น ประเภทข้อมูล ที่ทำหน้าที่เป็น นามธรรม ของ คลาส โดยจะอธิบายชุดของ ลายเซ็นเมธอด...
ตัวอย่าง
ภาษาโปรแกรม บาง ภาษา มีการรองรับอินเทอร์เฟซอย่างชัดเจน เช่น Ada , C# , D , Dart , Delphi , Go , Java , Logtalk , Object Pascal , Objective-C , OCaml , PHP , Racket , Swift และ Python 3.
ดูเพิ่มเติม
อินเทอร์เฟซ (การคำนวณ) โปรโตคอลใน Objective-C อินเทอร์เฟซ (Java) แนวคิด (การเขียนโปรแกรมทั่วไป) การมอบหมายงาน (การเขียนโปรแกรม) วิชา (วิทยาการคอมพิวเตอร์) อินเทอร์เฟซการเขียนโปรแกรมแอปพลิเคชัน
หมายเหตุ
^ การใช้คำศัพท์เหล่านี้แตกต่างกันไปตามภาษาโปรแกรม ภาษา Java และภาษาที่พัฒนาต่อยอดจาก Java มักใช้คำ ว่า interface ในขณะที่ คำว่า protocol นิยมใช้มากกว่าในภาษาอื่นๆ ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?