Antarmuka di Java mirip dengan kelas, tetapi tubuh antarmuka hanya dapat menyertakan metode dan
finalbidang abstrak (konstanta).
Baru-baru ini, saya melihat sebuah pertanyaan, yang terlihat seperti ini
interface AnInterface {
public default void myMethod() {
System.out.println("D");
}
}
Menurut definisi antarmuka, hanya metode abstrak yang diperbolehkan. Mengapa memungkinkan saya untuk mengkompilasi kode di atas? Apa defaultkata kuncinya?
Di sisi lain, ketika saya mencoba menulis kode di bawah ini, maka dikatakan modifier default not allowed here
default class MyClass{
}
dari pada
class MyClass {
}
Adakah yang bisa memberi tahu saya tujuan dari defaultkata kunci tersebut? Apakah hanya diperbolehkan di dalam antarmuka? Apa bedanya dengan default(tanpa pengubah akses)?