Gosling, extend anahtar sözcüğünü kullanmaktan kaçınmak istemedi ... sadece kalıtımın tekrar kod kullanımı için bir araç olarak kullanmadığını söyledi.
Kalıtım başlı başına kötü değildir ve OO yapılarının oluşturulmasında kullanılacak çok güçlü (gerekli) bir araçtır. Ancak, doğru kullanılmadığında ( Nesne yapıları oluşturmaktan başka bir şey için kullanıldığında ), çok sıkı bir şekilde bağlanmış ve bakımı çok zor olan bir kod oluşturur.
Kalıtım, polimorfik yapılar oluşturmak için kullanılması gerektiğinden, arayüzler ile kolayca yapılabilir, dolayısıyla Nesne Yapılarınızı tasarlarken sınıflar yerine arayüzleri kullanma ifadesi. Kendinizi kullanarak bulursanız, bir nesneden diğerine kopya yapıştırma kodundan kaçınmanın bir yolu olarak kullanabilirsiniz, belki de yanlış kullanıyorsunuzdur ve bu işlevselliği idare etmek ve bunun yerine kompozisyonu paylaşmak için uzmanlaşmış bir sınıfla daha iyi hizmet görürsünüz.
Liskov Değiştirme Prensibi hakkında bilgi edinin ve anlayın. Bir sınıfı (veya bununla ilgili bir ara yüzü) genişletmek üzereyken, prensibi ihlal edip etmediğinizi kendinize sorun, eğer evet ise, büyük olasılıkla (ab) mirası doğal olmayan şekillerde kullanmaktasınız. Yapması kolaydır ve çoğu zaman doğru şey gibi görünür, ancak kodunuzu sürdürmek, test etmek ve geliştirmek zorlaştırır.
--- Düzenle
Bu cevap , soruyu daha genel anlamda cevaplamak için oldukça iyi bir argüman yapar.