Arayüz ve bir soyut sınıfını kullanarak arasındaki fark, dilin kendisi tarafından uygulanması daha, benim için kod organizasyonu ile yapmak daha vardır. Onlar amaçlanan tasarım kalıpları içinde kalmak böylece çalışmak için diğer geliştiriciler için kod hazırlanırken ben onları çok kullanın. Kodunuzu size Aceess gerekmez kod geliyor olabilir API çağrıları bir öngörülmüş yanıt kabul sayede arayüzler "sözleşme tasarım" bir türüdür.
Soyut sınıfından miras olsa bir ne istediğiniz değil her zaman ilişki, "bir", ve bir arabirim uygulama ilişkisi a "gibi eylemleri" daha fazladır. Bu fark bazı bağlamlarda oldukça önemli olabilir.
Örneğin, bize birçok diğer sınıfları (vb hesapları ve türleri) uzandığı soyut bir sınıf Hesabınız var diyelim. Bu, bu tür bir grup için geçerlidir olan yöntemler belirli bir dizi bulunmaktadır. Onlar bu API'leri kullanmak için beklemeyin denetleyicileri atılır böylece Ancak, bu hesabı alt sınıflarından bazı Sürümlendirilebilir veya Listable veya Düzenlenebilir uygulamak. Denetleyicisi, ne tür bir nesnenin umursamıyor
Buna karşılık, ben de Hesabından uzanmaz bir nesne oluşturabilirsiniz, burada mantıklı değil Sürümlendirilebilir, bir kullanıcı soyut sınıf söylüyorlar ve hala Listable ve Düzenlenebilir uygulamak, ama.
Bu şekilde, ben FooUser alt sınıf bir hesap değil, ama bir Düzenlenebilir nesne gibi hareket ETMEZ söylüyorum. Aynı şekilde BarAccount Hesap uzanan, ancak bir kullanıcı alt sınıf değil, ancak düzenlenebilir, Listable ve ayrıca Sürümlendirilebilir uygular.
Kendisi darmadağın ve çirkin olurdu değil sadece soyut sınıflara Düzenlenebilir, Listable ve Sürümlendirilebilir bu API'ler tüm ekleyerek, ama Hesap ve Kullanıcı ortak arayüzleri çoğaltmak, ya da Sürümlendirilebilir uygulamak benim User nesnesi zorlayacaktır ya, muhtemelen sadece bir atmak için istisna.