İnterface ve Abstract benzerlikleri veya farkları nelerdir?

İnterface ve Abstract class’lar new anahtar sözcüğü ile oluşturulamazlar.

!!! Bir sınıf birden fazla interface’i kalıtım olarak alabilir ama bir sınıfa bir tane abstract class kalıtım alınabilir !!!

Abstract sınıflar içerisinde metod gövdeleri tanımlanıp özellik değerleri ayarlandığı için genellikle sonradan üzerine ek geliştirilmek yapmak için kullanılıır ama interface de ise body ve değer set edilemediği için tamamen interface üzerinden tüm üyeleri implemente edilerek sıfırdan geliştirmeler yapılması gereken durumlarda kullanılır.

!!!Abstract class’lar içerisinde sadece abstract olarak işaretlenmiş metod ve özellikler implement edilmek zorundadır fakat interface içerisindeki tüm özellik ve metodlar implement edilmek zorundadır.!!!

Interface içerisinde özellik ve metodlarda erişim belirleyiciler kullanılmaz herşey public olarak kabul edilir fakat abstract sınıflarda kullanılabilir.

Bir abstract class sub’lar, fonksiyonlar ve property’ler için access modifier’lar içerebilir.

Bir interface sub’lar, fonksiyonlar ve property’ler için access modifier’lar içeremez. Herşey public kabul edilir.

Abstract sınıflara diğer sınıf ve interface’ler kalıtım olarak geçilebilir fakat interface’e yine farklı interface’ler haricinde herhangi bir yapı kalıtım olarak geçilemez.

İnterfaceler çoklu kalıtımı sağlamaya yardımcı abstract classlar ise çoklu kalıtımı desteklemez.

IPerson.cs;

    // interface new anahtar sözcüğü ile oluşturulamaz.
    
    // Bir sınıf birden fazla interface’i kalıtım olarak alınabilir.
    
    // Interface içerisinde boş metodlar tanımlanabilir
   
    // Interface içerisinde özellik ve metodlarda erişim belirleyiciler kullanılmaz fakat abstract sınıflarda kullanılabilir.

    interface IPerson
    {
        string Name { get; set; }
 
        string GetName();
 
        string GetNameWithDesciption();
    }

Person.cs;

Last updated

Was this helpful?