Abstract Class ve Interface Arasındaki Farklar Nelerdir?

PHP 17 Ara 2022

Öncelikle Abstract ve Interface hakkında detaylı bilgiler için aşağıdaki makaleleri okumanızı, akabinde arasındaki farkları pekiştirmenizi öneririm.

Abstract Class Nedir?

Interface Class Nedir?

  1. Abstract class'ta sadece abstract methodlar olabilir, ancak interface'de tüm methodlar abstract olmalıdır.
  2. Abstract class'ta hem abstract hem de concrete (gerçekleştirilmiş) methodlar olabilir, ancak interface'de sadece abstract methodlar olabilir.
  3. Abstract class'ta bir sınıf birden fazla abstract class'tan miras alabilir, ancak bir sınıf sadece bir tane abstract class'tan miras alabilir. Interface'de ise bir sınıf birden fazla interface'den miras alabilir.
  4. Abstract class'ta bir sınıfın içine veri üyeleri eklenebilir, ancak interface'de veri üyeleri eklenemez.
  5. Abstract class'ta bir sınıfın içinde bir constructor olabilir, ancak interface'de constructor olmaz.
  6. Abstract class'ta bir sınıf birden fazla abstract class'tan miras alabilir, ancak bir sınıf sadece bir tane concrete class'tan miras alabilir. Interface'de ise bir sınıf birden fazla interface'den miras alabilir, ancak bir concrete class'tan asla miras alamaz.
  7. Abstract class'lar, bir sınıfın bir kısmını gerçekleştirirken kullanılır. Interface'ler ise bir sınıfın tamamını gerçekleştirirken kullanılır.

Spercific olarak:

  • Abstract class: Bir sınıfın bir kısmını gerçekleştirirken kullanılır. Bir abstract class'ta abstract methodlar olabilir ve bu methodların gerçekleştirilmesi için türetilen sınıflar tarafından zorunlu hale getirilir. Ayrıca, abstract class'ların içinde concrete methodlar da olabilir. Abstract class'ların içinde veri üyeleri de olabilir.
  • Interface: Bir sınıfın tamamını gerçekleştirirken kullanılır. Bir interface'de tüm methodlar abstract olmalıdır ve bu methodların gerçekleştirilmesi için türetilen sınıflar tarafından zorunlu hale getirilir. Interface'lerde veri üyeleri olmaz ve constructor da olmaz. Bir sınıf birden fazla interface'den miras alabilir, ancak bir concrete class'tan asla miras alamaz.

Etiketler