Diğer cevaplarda belirtildiği gibi, Koleksiyonlar çerçevesinde geriye dönük uyumluluk sağlamak için bir arayüze uygulama ekleme yeteneği eklendi. Geriye dönük uyumluluk sağlamanın, bir arabirime uygulama eklemek için potansiyel olarak tek iyi neden olduğunu iddia ediyorum.
Aksi takdirde, bir arabirime uygulama eklerseniz, arabirimlerin neden ilk başta eklendiğine ilişkin temel yasayı ihlal edersiniz. Java, çoklu kalıtım sağlayan C ++ 'dan farklı olarak tek bir kalıtım dilidir. Arabirimler, çoklu kalıtımla gelen sorunları ortaya çıkarmadan çoklu kalıtımın desteklendiği bir dil ile gelen yazma avantajları sağlar.
Daha spesifik olarak, Java bir uygulamanın yalnızca tek mirasına izin verir, ancak arabirimlerin birden çok mirasına izin verir. Örneğin, aşağıdakiler geçerli Java kodudur:
class MyObject extends String implements Runnable, Comparable { ... }
MyObject
yalnızca bir uygulamayı miras alır, ancak üç sözleşmeyi miras alır.
Java, uygulamanın birden fazla mirasını iletti, çünkü uygulamanın birden fazla mirası bu cevabın kapsamı dışında olan bir dizi dikenli sorunla birlikte geliyor. Çoklu uygulama devralma problemleri olmadan sözleşmelerin çoklu mirasına (diğer bir deyişle arayüzler) izin vermek için arayüzler eklendi.
Demek istediğim, Ken Arnold ve James Gosling'in Java Programlama Dili, 4. baskı kitabından bir alıntı :
Tek miras bazı kullanışlı ve doğru tasarımları engeller. Çoklu kalıtım problemleri, uygulamanın çoklu kalıtımından kaynaklanır, ancak birçok durumda, birçok soyut sözleşmeyi ve belki de somut bir uygulamayı devralmak için çoklu kalıtım kullanılır. Bir uygulamayı devralmadan soyut bir sözleşmeyi devralmak için bir yol sağlamak, birden çok uygulama mirası sorunu olmadan birden fazla mirasın yazım avantajlarına izin verir. Soyut bir sözleşmenin mirasına arabirim mirası denir
. Java programlama dili, bir interface
tür bildirmenize izin vererek arabirim mirasını destekler