กลับไปหน้าบทความ

อ่าน 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 คือการใช้แนวคิดต่างจากการสืบทอด แนวคิดนั้นอนุญาตให้ประเภทใดก็ได้ (ไม่ใช่แค่คลาส) ตรงตามข้อกำหนดทั้งหมดของแนวคิดนั้น

ดูเพิ่มเติม

หมายเหตุ

  1. ^การใช้คำศัพท์เหล่านี้แตกต่างกันไปตามภาษาโปรแกรม ภาษา Java และภาษาที่พัฒนาต่อยอดจาก Java มักใช้คำว่า interfaceในขณะที่คำว่า protocolนิยมใช้มากกว่าในภาษาอื่นๆ
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Interface_(object-oriented_programming)&oldid=1360723777 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ อินเทอร์เฟซ (การเขียนโปรแกรมเชิงวัตถุ)

ใน การเขียนโปรแกรมเชิงวัตถุ อิน เทอร์เฟซ หรือประเภท โปรโตคอล [ 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?