Проблема ромба возникает, если B и C, каждый из которых содержит конфликтующие определения для унаследованного метода, переопределены D. Проблема не возникнет, если B и C наследуют методы без их переопределения, а D предоставил переопределения для метода, поскольку переопределение D будет влиять на B и C одинаково.
Если A, B и C являются интерфейсами, то ни B, ни C не смогут предоставить определения для методов A. Класс, который реализует оба интерфейса, может сделать это, но любое определение, которое он предоставляет для методов A, будет в равной степени применяться к определениям из B и C.
Другое важное отличие между интерфейсами и классами состоит в том, что при переопределении члена класса можно связать с родительским методом, но при реализации интерфейса никогда не будет родительского метода для цепочки.