อินเทอร์เฟซใน Java คล้ายกับคลาส แต่เนื้อหาของอินเทอร์เฟซสามารถมีได้เฉพาะเมธอดนามธรรมและ
final
ฟิลด์ (ค่าคงที่)
เมื่อเร็ว ๆ นี้ฉันเห็นคำถามซึ่งมีลักษณะเช่นนี้
interface AnInterface {
public default void myMethod() {
System.out.println("D");
}
}
ตามคำจำกัดความของอินเทอร์เฟซอนุญาตให้ใช้วิธีนามธรรมเท่านั้น ทำไมจึงอนุญาตให้คอมไพล์โค้ดด้านบน? อะไรคือสิ่งที่default
คำหลัก?
ในทางกลับกันเมื่อฉันพยายามเขียนโค้ดด้านล่างมันก็บอกว่า modifier default not allowed here
default class MyClass{
}
แทน
class MyClass {
}
ใครช่วยบอกจุดประสงค์ของdefault
คีย์เวิร์ดได้ไหม อนุญาตเฉพาะในอินเทอร์เฟซหรือไม่? มันแตกต่างจากdefault
(ไม่มีตัวปรับการเข้าถึง) อย่างไร?