อินเทอร์เฟซ Java
อินเทอร์เฟซ
อีกวิธีหนึ่งในการบรรลุ สิ่งที่ เป็นนามธรรมใน Java คือการใช้อินเทอร์เฟซ
An interface
คือ " คลาสนามธรรม " ที่สมบูรณ์ซึ่งใช้เพื่อจัดกลุ่มเมธอดที่เกี่ยวข้องกับเนื้อหาว่าง:
ตัวอย่าง
// interface
interface Animal {
public void animalSound(); // interface method (does not have a body)
public void run(); // interface method (does not have a body)
}
ในการเข้าถึงเมธอดของอินเตอร์เฟส อินเตอร์เฟสจะต้อง "ใช้งาน" (เหมือนกับที่สืบทอดมา) โดยคลาสอื่นที่มี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 Main {
public static void main(String[] args) {
Pig myPig = new Pig(); // Create a Pig object
myPig.animalSound();
myPig.sleep();
}
}
หมายเหตุเกี่ยวกับอินเทอร์เฟซ:
- เช่นเดียวกับคลาสนามธรรมอินเทอร์เฟซไม่สามารถใช้เพื่อสร้างวัตถุ (ในตัวอย่างข้างต้น เป็นไปไม่ได้ที่จะสร้างวัตถุ "สัตว์" ใน MyMainClass)
- เมธอดส่วนต่อประสานไม่มีเนื้อหา - คลาส "ใช้งาน" จัดเตรียมไว้ให้
- ในการใช้งานอินเทอร์เฟซ คุณต้องแทนที่วิธีการทั้งหมด
- วิธีอินเทอร์เฟซเป็นค่าเริ่มต้น
abstract
และpublic
- แอตทริบิวต์อินเทอร์เฟซเป็นค่าเริ่ม
public
ต้นstatic
และfinal
- อินเทอร์เฟซไม่สามารถมีตัวสร้างได้ (เนื่องจากไม่สามารถใช้สร้างวัตถุได้)
ทำไมและเมื่อใดจึงควรใช้อินเทอร์เฟซ
1) เพื่อให้เกิดความปลอดภัย - ซ่อนรายละเอียดบางอย่างและแสดงเฉพาะรายละเอียดที่สำคัญของวัตถุ (ส่วนต่อประสาน)
2) Java ไม่รองรับ "การสืบทอดหลายรายการ" (คลาสสามารถสืบทอดจากซูเปอร์คลาสเดียวเท่านั้น) อย่างไรก็ตาม สามารถทำได้ด้วยอินเทอร์เฟซ เนื่องจากคลาสสามารถใช้อินเทอร์เฟซได้หลายแบบ หมายเหตุ:ในการใช้งานหลายอินเทอร์เฟซ ให้แยกส่วนด้วยเครื่องหมายจุลภาค (ดูตัวอย่างด้านล่าง)
อินเทอร์เฟซหลายตัว
ในการใช้งานหลายอินเตอร์เฟส ให้คั่นด้วยเครื่องหมายจุลภาค:
ตัวอย่าง
interface FirstInterface {
public void myMethod(); // interface method
}
interface SecondInterface {
public void myOtherMethod(); // interface method
}
class DemoClass implements FirstInterface, SecondInterface {
public void myMethod() {
System.out.println("Some text..");
}
public void myOtherMethod() {
System.out.println("Some other text...");
}
}
class Main {
public static void main(String[] args) {
DemoClass myObj = new DemoClass();
myObj.myMethod();
myObj.myOtherMethod();
}
}