Java ใช้คำหลัก
ตัวอย่าง
An interface
เป็น "คลาส" นามธรรมที่ใช้เพื่อจัดกลุ่มวิธีการที่เกี่ยวข้องกับเนื้อหา "ว่าง":
ในการเข้าถึงเมธอดของอินเตอร์เฟส อินเตอร์เฟสจะต้อง "ใช้งาน" (เหมือนกับที่สืบทอดมา) โดยคลาสอื่นที่มีimplements
คีย์เวิร์ด (แทนที่จะเป็นextends
) เนื้อหาของเมธอดอินเตอร์เฟสมีให้โดยคลาส "การใช้งาน":
// interface
interface Animal {
public void animalSound(); // interface method (does not have a body)
public void sleep(); // interface method (does not have a body)
}
// Pig "implements" the Animal interface
class Pig implements Animal {
public void animalSound() {
// The body of animalSound() is provided here
System.out.println("The pig says: wee wee");
}
public void sleep() {
// The body of sleep() is provided here
System.out.println("Zzz");
}
}
class MyMainClass {
public static void main(String[] args) {
Pig myPig = new Pig(); // Create a Pig object
myPig.animalSound();
myPig.sleep();
}
}
ความหมายและการใช้งาน
implements
คีย์เวิร์ดใช้เพื่อติดตั้งinterface
.
คีย์เวิร์ดใช้เพื่อประกาศ คลาสinterface
พิเศษที่มีเมธอดนามธรรมเท่านั้น
ในการเข้าถึงเมธอดของอินเตอร์เฟส อินเตอร์เฟสจะต้อง "ใช้งาน" (เหมือนกับที่สืบทอดมา) โดยคลาสอื่นที่มีimplements
คีย์เวิร์ด (แทนที่จะเป็นextends
) เนื้อหาของเมธอดอินเตอร์เฟสมีให้โดยคลาส "การใช้งาน"
หมายเหตุเกี่ยวกับอินเทอร์เฟซ:
- ไม่สามารถใช้สร้างวัตถุได้ (ในตัวอย่างข้างต้น ไม่สามารถสร้างวัตถุ "สัตว์" ใน MyMainClass)
- เมธอดส่วนต่อประสานไม่มีเนื้อหา - คลาส "ใช้งาน" จัดเตรียมไว้ให้
- ในการใช้งานอินเทอร์เฟซ คุณต้องแทนที่วิธีการทั้งหมด
- วิธีอินเทอร์เฟซเป็นค่าเริ่มต้น
abstract
และpublic
- แอตทริบิวต์อินเทอร์เฟซเป็นค่าเริ่ม
public
ต้นstatic
และfinal
- อินเทอร์เฟซไม่สามารถมีตัวสร้างได้ (เนื่องจากไม่สามารถใช้สร้างวัตถุได้)
ทำไมและเมื่อใดจึงควรใช้อินเทอร์เฟซ
เพื่อให้ได้ความปลอดภัย - ซ่อนรายละเอียดบางอย่างและแสดงเฉพาะรายละเอียดที่สำคัญของวัตถุ (ส่วนต่อประสาน)
Java ไม่รองรับ "การสืบทอดหลายรายการ" (คลาสสามารถสืบทอดจากซูเปอร์คลาสเดียวเท่านั้น) อย่างไรก็ตาม สามารถทำได้ด้วยอินเทอร์เฟซ เนื่องจากคลาสสามารถใช้อินเทอร์เฟซได้หลายแบบ หมายเหตุ:ในการใช้งานหลายอินเทอร์เฟซ ให้แยกส่วนด้วยเครื่องหมายจุลภาค (ดูตัวอย่างด้านล่าง)
อินเทอร์เฟซหลายตัว
ในการใช้งานหลายอินเตอร์เฟส ให้คั่นด้วยเครื่องหมายจุลภาค:
ตัวอย่าง
interface FirstInterface {
public void myMethod(); // interface method
}
interface SecondInterface {
public void myOtherMethod(); // interface method
}
// DemoClass "implements" FirstInterface and SecondInterface
class DemoClass implements FirstInterface, SecondInterface {
public void myMethod() {
System.out.println("Some text..");
}
public void myOtherMethod() {
System.out.println("Some other text...");
}
}
class MyMainClass {
public static void main(String[] args) {
DemoClass myObj = new DemoClass();
myObj.myMethod();
myObj.myOtherMethod();
}
}
หน้าที่เกี่ยวข้อง
อ่านเพิ่มเติมเกี่ยวกับอินเทอร์เฟซใน บทช่วย สอน Java Interfaceของ เรา