Java Interface
Interface คือ พิมพ์เขียวหรือแม่แบบ(Blueprint) ของ Classes
คำกล่าวในเชิงวัตถุคือ
Interface คือ แม่แบบใหญ่ (ชื่อกลุ่มใหญ่ๆ)
Class คือ แม่แบบย่อย (ชื่อเฉพาะเจาะจง)
Object คือ วัตถุที่สร้างจากแม่แบบ
Classes สามารถรับแม่แบบของ Interface ไปใช้งานได้โดยการ implements Interface
keyword ที่ใช้ในกรณีของความสัมพันธ์ระหว่าง Classes และ interface มี 3 กรณีดังนี้
Interface ไม่สามารถ implements Interface ได้ และ Interface ไม่สามารถ implements Class ได้
Interface จะมีสมาชิกอยู่สองอย่างหลักๆคือ Variable และ Methods เท่านั้น
Interface และสมาชิกทั้งหมดไม่สามารถ ระบุ Access Modifier เป็น private หรือ protected ได้
Interface และสมาชิกทั้งหมดไม่สามารถ ระบุ Access Modifier เป็น private หรือ protected ได้
Interface ไม่สามารถสร้าง Object หรือ Instance ของมันได้
Interface ไม่สามารถมี Constructor ได้ เพราะ Constructor จะทำงานตอนสร้าง Instance แต่ Interface สร้าง Instance ไม่ได้จึงไม่จำเป็นต้องมี Constructor
Method ที่ประกาศใน Interface จะเป็น Abstract Method (Method ที่ไม่มี body หรือ การทำงานใดๆเป็น Method ที่มีแต่ ชื่อและParameter) ทั้งหมด และ Method นี้ไม่สามารถใส่ keyword static หรือ final ได้ (ที่กล่าวนี้ไม่รวม Method main)
Variables ที่ประกาศใน Interface จะต้องกำหนดค่าเริ่มต้นให้มันเสมอ
Variables ที่ประกาศใน Interface จะเป็น public static final ทั้งหมด
ถ้าคุณประกาศ Variables และ Method ใน Interface ถึงแม้ว่า จะใส่หรือไม่ใส่ public static final ให้กับ Variables และ Abstract ให้กับ Method สุดท้ายแล้ว Compiler จะใส่ให้คุณอยู่ดีโดยเป็นค่า default ของมันที่มันต้องเป็น
ตัวอย่าง
Classes ที่ implements Interface ต้อง import ที่อยู่ของ Interface ที่ implements ด้วยถ้าไม้ได้อยู่ใน Package เดียวกัน
Classes ที่ implements Interface จะได้รับ Variables และ Methods ที่ประกาศ ใน Interface ที่ implements ด้วย
Classes ที่ implements Interface คุณไม่สามารถเปลี่ยนแปลงค่าของ Variable ที่ประกาศใน Interface ได้
Classes ที่ implements Interface ต้อง Override ทุก Method ที่ได้รับมาจาก Interface และต้องใส่ body ให้กับ Method ด้วย (ยกเว้น Classes ที่เป็น Abstract Class) แต่ถ้าประกาศ Variable เหมือนกับ ที่ได้รับมาจาก Interface จะเกิดปรากฎการณ์ shadowing
คุณจะสามารถเข้าถึง Interface ได้ ต้องเข้าถึงผ่าน Class ที่ implements Interface เท่านั้น
Classes ที่ implements Interface คุณสามารถสร้าง Instance ของ Classes ดังกล่าว โดยกำหนด Data type ของตัวแปร ที่เก็บค่าของ Instance เป็นชื่อ Interface ได้ (จะหมายความว่า Instance ของ Class reference ถึง Interface)
ตัวอย่าง code
1. ทำให้การบำรุงรักษาและการพัฒนาสะดวกปลอดภัยกว่าเดิมเพราะไม่ต้องไปยุ่งกับ Code บางส่วน
2. สามารถทำ implements multiple Interface ทำให้เขียน Code ได้สะดวกมากยิ่งขึ้น
Variables ที่ประกาศใน Interface จะต้องกำหนดค่าเริ่มต้นให้มันเสมอ
Variables ที่ประกาศใน Interface จะเป็น public static final ทั้งหมด
ถ้าคุณประกาศ Variables และ Method ใน Interface ถึงแม้ว่า จะใส่หรือไม่ใส่ public static final ให้กับ Variables และ Abstract ให้กับ Method สุดท้ายแล้ว Compiler จะใส่ให้คุณอยู่ดีโดยเป็นค่า default ของมันที่มันต้องเป็น
ตัวอย่าง
Classes ที่ implements Interface ต้อง import ที่อยู่ของ Interface ที่ implements ด้วยถ้าไม้ได้อยู่ใน Package เดียวกัน
Classes ที่ implements Interface จะได้รับ Variables และ Methods ที่ประกาศ ใน Interface ที่ implements ด้วย
Classes ที่ implements Interface คุณไม่สามารถเปลี่ยนแปลงค่าของ Variable ที่ประกาศใน Interface ได้
Classes ที่ implements Interface ต้อง Override ทุก Method ที่ได้รับมาจาก Interface และต้องใส่ body ให้กับ Method ด้วย (ยกเว้น Classes ที่เป็น Abstract Class) แต่ถ้าประกาศ Variable เหมือนกับ ที่ได้รับมาจาก Interface จะเกิดปรากฎการณ์ shadowing
คุณจะสามารถเข้าถึง Interface ได้ ต้องเข้าถึงผ่าน Class ที่ implements Interface เท่านั้น
Classes ที่ implements Interface คุณสามารถสร้าง Instance ของ Classes ดังกล่าว โดยกำหนด Data type ของตัวแปร ที่เก็บค่าของ Instance เป็นชื่อ Interface ได้ (จะหมายความว่า Instance ของ Class reference ถึง Interface)
ตัวอย่าง code
subInterface สามารถ extend superInterface ได้ โดย Classes ที่ implements subInterface นั้นจะได้รับ Variable และ Method ของทั้ง subInterface และ superInterface และต้อง Override Method เหล่านั้นทั้งหมด
หาก subInterface ประกาศ Variables หรือ Method ที่เหมือนกันกับ superInterface จะทำให้ Variables หรือ Method เหล่านั้น จะถูกสวมทับเป็นของ subInterface อย่างเดียว
ตัวอย่าง code
Classes สามารถ implements multiple Interface ได้ โดย Classes จะได้รับ Variables หรือ Method ของทุก Interface ที่ implements
หากประกาศ Variable ทั้ง 2 Interface เหมือนกัน และ Class implements Interface ทั้งสองนั้น Case นี้จะเกิด Error ทันที javaไม่รองรับปัญหานี้ คุณต้องแก้ไขโดยการออกแบบระบบใหม่โดยหลีกเลี่ยงไม่ให้เกิด
Case นี้ เอง
หากประกาศ Method ทั้ง 2 Interface เหมือนกัน และ Class ที่ implements Interface ทั้งสองนั้น Method มันจะแมทเป็นอันเดียว และ จะได้รับ Method ไปให้ทำการ Override เพียง 1 เดียวเท่านั้น ใน Case นี้ไม่มีปัญหาเพราะ Method ทั้งสองมันไม่มี Body อยู่แล้ว
ตัวอย่าง code
ทำไมต้องใช้ Interface ? Interface มันมีประโยชน์อะไร ? ตัวอย่าง code
1. ทำให้การบำรุงรักษาและการพัฒนาสะดวกปลอดภัยกว่าเดิมเพราะไม่ต้องไปยุ่งกับ Code บางส่วน
2. สามารถทำ implements multiple Interface ทำให้เขียน Code ได้สะดวกมากยิ่งขึ้น
ไม่มีความคิดเห็น:
แสดงความคิดเห็น