Vấn đề kim cương là không có khả năng quyết định thực hiện phương pháp nào để lựa chọn. Scala giải quyết điều này bằng cách xác định lựa chọn triển khai nào là một phần của thông số kỹ thuật ngôn ngữ ( đọc phần về Scala trong bài viết Wikipedia này ).
Tất nhiên, định nghĩa thứ tự tương tự cũng có thể được sử dụng trong thừa kế nhiều lớp, vậy tại sao phải bận tâm với các đặc điểm?
Lý do IMO là các nhà xây dựng. Trình xây dựng có một số hạn chế mà các phương thức thông thường không có - chúng chỉ có thể được gọi một lần cho mỗi đối tượng, chúng phải được gọi cho mỗi đối tượng mới và hàm tạo của lớp con phải gọi hàm tạo của cha mẹ là hướng dẫn đầu tiên (hầu hết các ngôn ngữ sẽ làm điều đó ngầm cho bạn nếu bạn không cần truyền tham số).
Nếu B và C thừa hưởng A và D kế thừa B và C, và cả hai hàm tạo của B và C đều gọi hàm tạo của A, thì hàm tạo của D sẽ gọi hàm tạo của A hai lần. Xác định việc triển khai nào để chọn như Scala đã làm với các phương thức sẽ không hoạt động ở đây vì cả hai hàm tạo của B và C phải được gọi.
Đặc điểm tránh vấn đề này vì họ không có nhà xây dựng.