Bagaimana antarmuka baru ini bekerja dan apa yang akan
Ada penjelasan yang sempurna di Jawa Lambda FAQ. Berikut adalah kutipan dari Apa tentang berlian masalah? pasal ada:
interface A {
void m() default { ... }
}
interface B extends A {}
interface C extends A {}
class D implements B, C {}
Di awal kasus (kode diatas), pelaksanaan m diwarisi oleh D yang jelas yang ditetapkan oleh A — tidak ada kemungkinan lain. Jika situasi ini berubah jadi B sekarang juga menyatakan default pelaksanaan m, yang menjadi implementasi yang D mewarisi oleh-oleh "yang paling spesifik implementasi" aturan. Tapi jika kedua B dan C memberikan default implementasi, maka mereka konflik, dan D harus menggunakan sintaks X. super.m(...) untuk secara eksplisit memilih salah satu dari mereka, atau yang lain redeclare metode itu sendiri, mengesampingkan semua supertipe deklarasi.
Pastikan untuk memeriksa artikel sebelumnya tentang aturan-aturan untuk menyelesaikan konflik metode deklarasi dan artikel lain di Jawa Lambda — proyek mereka cukup baik.
Berikut ini adalah penjelasan rinci untuk Jawa 8' antarmuka baru model & diamond masalah multiple inheritance.
Seperti yang mungkin anda lihat dalam contoh ini, dimulai dengan JDK 8, Jawa telah memperkenalkan jenis multiple inheritance sebagai, yang kelas dan antarmuka mungkin berisi aplikasi pelaksanaan metode yang sama (sama nama & tanda tangan). Untuk mengatasi <a href="http://en.wikipedia.org/wiki/Multiple_inheritance#The_diamond_problem">berlian masalah ada yang didahulukan dalam urutan yang pelaksanaan yang digunakan: hanya jika kelas mengimplementasikan semua <i style="font-weight: bold;">default / opsional metode antarmuka, kode dapat disusun dan implementasi ini kelas yang digunakan. Atau penyusun mencoba untuk menambal hilang pelaksanaan(s) dengan antarmuka's default pelaksanaan. Dan jika ada beberapa default implementasi metode, maka <a href="http://en.wikipedia.org/wiki/Multiple_inheritance#The_diamond_problem">berlian masalah terjadi dan compiler menolak kompilasi.<br />
Jawa 8' antarmuka baru model adalah hasil dari menjelang kompatibilitas mundur, i. e. untuk menjaga ada kode yang ditulis melawan pra Jawa 8 antarmuka compilable.