CodeBlanks Logo Icon CodeBlanks

interface vs abstract

PHP kursu · Orta seviye · Ders 51/115

interface ve abstract class arasındaki farkı ve ne zaman hangisini kullanacağını öğrenirsin.

interface ve abstract class farkı

abstract class (soyut sınıf), new ile doğrudan örneklenemeyen ve abstract methodlar (gövdesiz) içerebilen sınıftır. Alt sınıflar bu methodları yazar. Şimdilik karşılaştırma için bilmemiz gereken bu kadar.

Temel fark: bir sınıf yalnızca bir abstract class'ı extends edebilir (tek miras), ama birden fazla interface'i implements edebilir.

Ayrıca interface property tutmaz; yalnızca method imzası ve sabit. abstract class ise property, constructor ve gövdeli method tutabilir. interface saf sözleşmedir; abstract class kısmi uygulama paylaşır.

ne zaman interface, ne zaman abstract?

interface saf sözleşmedir; uygulayan sınıflar arasında ortak kod paylaşmaz. İlişkisiz sınıflara aynı capability'yi (rolü) eklemek için idealdir: Loggable, Serializable, Cacheable.

abstract class ortak bir temel ve kısmi uygulama sunar. Animal altında Dog, Cat gibi bir hiyerarşi kuruyorsan, paylaşılan property ve methodları abstract class'ta toplarsın.

Özet: capability (yetenek) için interface, ortak temel için abstract class. İkisi birlikte de kullanılabilir: class Dog extends Animal implements Loggable.

Kendini test et

  1. Bir sınıf kaç tane interface uygulayabilir?

    • Sınırsız sayıda
    • Yalnızca bir tane
    • En fazla iki
    • Hiçbir tane
    Cevabı göster

    Sınırsız sayıda — Doğru. Bir sınıf virgülle sınırsız interface uygulayabilir: implements A, B, C.

  2. abstract class ve interface birlikte

    class Dog extends Animal ____ Loggable, Cacheable {
        // ...
    }
    Cevabı göster
    class Dog extends Animal implements Loggable, Cacheable {
        // ...
    }
  3. interface ve abstract farkını eşleştir

    interface
    Sınırsız uygulama
    abstract class
    Tek miras alınır
    property
    abstract class'ta
    saf sözleşme
    interface'te
  4. Hangi durumda interface tercih edilir?

    • Ortak kod paylaşılacaksa
    • Paylaşılan property gerekiyorsa
    • Tek bir temel sınıf hiyerarşisi kurulacaksa
    • İlişkisiz sınıflara aynı capability eklenecekse
    Cevabı göster

    İlişkisiz sınıflara aynı capability eklenecekse — Doğru. İlişkisiz sınıflara aynı capability (rol) eklemek için interface idealdir.

Orta seviye bölümündeki tüm dersler