C # soyut sınıf ve arayüz arasındaki fark

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 Nedir?

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.

Arayüz Nedir?

Ö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.

Abstract Class vs. Interface: Abstract Class ve C # Arayüzü arasındaki fark

  1. Çoklu Kalıtım - Bir sınıf yalnızca bir soyut sınıfı kullanabilir, bu nedenle çoklu kalıtım desteklenmez. Öte yandan, bir arabirim birden çok kalıtımı destekleyebilir, yani bir sınıf herhangi bir sayıda kalıtımdan miras alabilir.
  2. Tanım  nın-nin Soyut Sınıf ve Arayüz C #- Soyut sınıf, herhangi bir uygulama olmadan tanım içerebilen özel bir sınıf türüdür. Uygulama mantığı türetilmiş sınıflar tarafından sağlanır. Soyut ve soyut olmayan yöntemlere sahip olabilir. Öte yandan bir arayüz sadece hiçbir şey yapamayan bir modeldir. Teknik olarak, sadece boş bir kabuk.
  3. uygulama - Soyut bir sınıf hem tanımı hem de uygulanmasını içerebilir. Bu örneklenemeyen tamamlanmamış bir sınıf. Bir arayüz herhangi bir kod olmadan sadece işlevselliğin imzasına sahip olabilir.
  4.  Erişim Değiştiricileri - Soyut bir sınıfın subs, fonksiyonlar, özellikler, vb. Gibi çeşitli erişim değiştiricileri olabilir, ancak bir arabirimin erişim değiştiricilerine sahip olmasına izin verilmez ve tüm yöntemler örtük olarak genel olarak tanımlanmalıdır.
  5. homojenlik - Bir soyut sınıf aynı tür, davranış ve durumdaki uygulamalar için kullanılırken, bir arabirim yalnızca yöntem imzalarını paylaşan uygulamalar için kullanılır..
  6. deklarasyon - Soyut bir sınıf, diğer tüm sınıflar için bir temel sınıf görevi görür, böylece bir arabirimin herhangi bir değişken bildirmesine izin verilmezken herhangi bir değişkeni bildirebilir veya kullanabilir.
  7. Yapıcı Beyanı - Soyut bir sınıfın yapıcı bildirimi olabilirken, bir arabirimin yapıcı bildirimi olamaz.
  8. Çekirdek ve Çevresel - Soyut bir sınıf, bir sınıfın temel kimliğini tanımlamak için kullanılır ve aynı veri türündeki nesneler için kullanılabilir. Öte yandan bir arabirim, bir sınıfın çevresel yeteneğini tanımlamak için kullanılır.
  9. Sert ve Esnek - Soyut bir sınıf, en azından bir geliştiricinin bakış açısından işlevsellik açısından daha esnektir, ancak bir arayüz daha katıdır.

Soyut Sınıf ve Arayüz: Tablo formu

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.

özet

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..