İnterface ve Abstract Arasındaki Farklar

1- Abstract sınıflarda override edilmesini yani alt sınıflarda kullanıma zorunlu tutmak istediğimiz özellikleri ve methodları Abstract olarak işaretlemek zorundayken, bu durum arayüzlerde söz konusu değildir. Bu açıdan arayüzleri incelediğimizde arayüzlere tam anlamıyla kontrat yaptığımız yapılar diyebiliriz. Yani interface içerisinde yazdığım her üye alt sınıfta kullanılmak zorundadır.

2- Bir concrete sınıf birden fazla Abstract sınıftan kalıtım alamaz. Şayet mimaride bir child class'ın birden fazla ata sınıfı olacaksa yani çoklu kalıtıma ihtiya. varsa burada ınterface kullanmalıyım.

3-Abstract sınıflar override mantığı bulunmaktadır, interface'de ise implemenatation.

4- Abstract sınıflar içerisinde constructor yapısı kullanırken interface'de bu yapı bulunmamaktadır. Bu konu üzerinden şu yorumuda yapabiliriz. Abstract sınıflar içerisinde kodlama yapılabilirken interface'ler içerisinde kodlama yapamıyorduk taki C# 8.0 çıkana kadar. c# 8.0'dan sonra interface'ler access modifier kabul etmeye ve kodlmaya açık hale geldi.

Last updated