Masalah intan adalah ketidakmampuan untuk memutuskan implementasi metode mana yang harus dipilih. Scala memecahkan ini dengan mendefinisikan implementasi mana yang harus dipilih sebagai bagian dari spesifikasi bahasa ( baca bagian tentang Scala dalam artikel Wikipedia ini ).
Ofcourse, definisi urutan yang sama juga bisa digunakan di kelas multiple inheritance, jadi mengapa repot dengan sifat-sifat?
Alasan IMO adalah konstruktor. Konstruktor memiliki beberapa batasan yang tidak dimiliki metode reguler - mereka hanya dapat dipanggil satu kali per objek, mereka harus dipanggil untuk setiap objek baru, dan konstruktor kelas anak harus memanggil konstruktor induknya sebagai instruksi pertama (instruksi pertama (kebanyakan bahasa akan lakukan secara implisit untuk Anda jika Anda tidak perlu melewati parameter).
Jika B dan C mewarisi A dan D mewarisi B dan C, dan kedua konstruktor B dan C memanggil konstruktor A, maka konstruktor D akan memanggil konstruktor A dua kali. Mendefinisikan yang implementasi untuk memilih seperti Scala lakukan dengan metode tidak akan bekerja di sini karena kedua B dan konstruktor C harus dipanggil.
Sifat menghindari masalah ini karena mereka tidak memiliki konstruktor.