Soyut bir sınıf bir arayüze çok benziyor, ancak konsept OOP'nin yeni başlayanları için biraz kafa karıştırıcı. Kavramsal olarak, soyut bir sınıf, elbette, herhangi bir uygulama olmadan bir arayüze benziyor, ancak farklılıklardan adil bir payları var. Soyut bir sınıf kısmen veya tamamen uygulanabilir olsa da, bir arayüz tamamen uygulanmalıdır. İkisi arasındaki en önemli fark, soyut bir sınıfın varsayılan uygulamaya sahip olabilmesidir, bir arayüz ise sadece üye bildirimlerini içeren yöntemlerin tanımıdır. Her ikisinin de teorik yönlerini ayrıntılı olarak tartışalım.
Soyut sınıf, diğer sınıfların temeli olarak hareket eden ve somutlaştırılamayan özel bir sınıf türüdür. Soyut bir sınıfın uygulama mantığı, türetilmiş sınıfları tarafından sağlanır. Bir sınıf özeti yapmak için, “soyut” değiştirici kullanılır, bu da bundan eksik sınıfın bazı eksik uygulamaların uygulanması gerektiği anlamına gelir. Hem soyut hem de soyut olmayan üyeler içerir. Soyut bir sınıf, birden fazla türetilmiş sınıf tarafından daha fazla paylaşılabilen ve geçersiz kılınabilen temel işlevsellik sağlamayı amaçlamaktadır. Her türlü kod çoğaltmasından kaçınmak yararlıdır. Arayüzlere çok benziyorlar, ancak ek işlevsellik ile.
Öte yandan bir arabirim, yalnızca işlevselliğin imzasını içeren bir sınıf değildir. Hiçbir uygulaması olmayan bir model. Kavramsal olarak konuşursak, sadece üyelerin beyanını içeren yöntemlerin tanımıdır. Üyelerinin uygulanmasını içermeyen boş bir kabuk. Bu, yalnızca yöntemler, olaylar, dizin oluşturucular, özellikler vb. Gibi soyut üyeleri içeren soyut bir temel sınıf gibidir. Doğrudan somutlaştırılamaz ve üyeleri herhangi bir sınıf tarafından uygulanabilir. Ayrıca, bir sınıf birden çok arabirim uygulayabilir, ancak bir sınıf yalnızca tek bir sınıfı devralabilir.
Soyut Sınıf | Arayüz |
Soyut bir sınıf, işlevlerin, alt öğelerin ve özelliklerin üye bildirimi için tüm erişim değiştiricilere sahip olabilir. | Bir arabirimin, işlevlerin, alt öğelerin, özelliklerin vb. Üye bildirimi için erişim değiştiricilerine sahip olmasına izin verilmez. Tüm üyelerin dolaylı olarak herkese açık olduğu varsayılır.. |
Bir sınıf en fazla yalnızca bir soyut sınıfı kullanabilir. | Sınıf herhangi bir sayıda arabirimi devralabilir. |
Soyut sınıfta çoklu kalıtım desteklenmez. | Bir arabirim birden fazla kalıtımı destekleyebilir. |
Teknik olarak, hem tanımı hem de uygulanmasını içerebilen veya içermeyen bir sınıftır. | Bir arayüz sadece işlevselliğin imzasına sahip olabilir, bu yüzden temelde boş bir kabuk. |
Soyut bir sınıf üyeler içerebilir. sabitler, tanımlı yöntemler ve yöntem saplamaları. | Bir arabirim yalnızca yöntemler ve consts içerebilir. |
Bir sınıfın temel kimliğini tanımlar ve aynı veri türündeki nesneleri tanımlamak için kullanılır. | Bir sınıfın çevresel yeteneklerini tanımlamak için kullanılır. |
Soyut bir sınıfın üyeleri, Tam Üye olmadıkça statik olamaz. | Bir arayüzün üyeleri statik olamaz. |
Aynı tür ve ortak davranış uygulamaları için idealdir. | Birden fazla uygulama yalnızca yöntem imzalarını paylaşıyorsa arayüz kullanmak daha iyidir. |
Yapıcı beyanına sahip olabilir. | Yapıcı bildirimi olamaz. |
Soyut bir sınıfın önceden tanımlanmış alanları ve yapıları vardır. | Alanlar arayüzlerde tanımlanamaz. |
Hem soyut hem de soyut olmayan yöntemlere sahip olabilir. | Sadece soyut yöntemlere sahip olabilir. |
Soyut bir sınıf ile bir arayüz arasındaki fark nedir? Bu muhtemelen herhangi bir teknik röportajda sorulan en yaygın sorulardan biridir. Herhangi bir C # eğitiminde soyut sınıflar ve arayüzler hakkında çok sayıda bilgi bulabilirsiniz, ancak ikisi arasındaki farkı anlamak oldukça zor bir bölümdür. Bulduğunuz tüm bilgileri birleştirebilirsiniz ve yine de yeterince alamıyorsunuz. Kavramsal olarak her ikisi de programlamadaki en önemli terimlerdir ve oldukça aynıdır, ancak işlevsellik açısından çok farklıdırlar. Soyut bir sınıf, diğer sınıflar için temel görevi gören özel bir sınıf türü iken, diğer taraftan, bir arayüz, yalnızca üye bildirimleri olan boş bir kabuktur..