Abstract Class

  • Bayangin aja abstrak skripsi.
  • Gak bisa diinstansiasi. Turunannya bisa.
  • Sebagai kerangka dasar.
  • Minimal punya satu method abstrak.
  • Boleh dimasukin property dan method reguler. Static juga boleh.
  • Kelas turunannya wajib mewarisi method abstract.
abstract class NamaClass {
  // method ini gak usah diisi, nanti aja turunannya yang ngisi.
  abstract public function abstractMethod();
}

Why abstract?

  • Representasi ide / konsep dasar.
  • Composition over inheritance.
  • Polimorphism.
  • Sentralisasi logic.
  • Good for teamwork.

Interface

  • Kelas abstract yang sama sekali tidak memiliki implementasi. Harus definisinya saja.
  • Template.
  • No property, hanya deklarasi method.
  • Methodnya harus public.
  • Turunanya wajib mengimplementasikan method-method yang ada di interface.
  • Tidak bisa diinstansiasi.
  • Sebuah class bisa mengimplementasi lebih dari satu interface.
interface NamaInterface {
  public function methodSatu();
  public function methodDua($parameter);
}

interface NamaInterfaceDua {
  public function methodTiga();
}

// implementasi satu interface
class NamaClass implements NamaInterface {
  protected $parameter;
  public function methodSatu() {
    // skrip
  }
  public function methodDua($parameter) {
    // skrip
  }
}

// implementasi dua interface
class NamaClassDua implements NamaInterface, NamaInterfaceDua {
  protected $parameter;
  public function methodSatu() {
    // skrip
  }
  public function methodDua($parameter) {
    // skrip
  }

  public function methodTiga() {
    // skrip
  }
}

Web Programming UNPAS

OOP DASAR pada PHP #13 - Abstract Class (bagian 1)
OOP DASAR pada PHP #14 - Abstract Class (bagian 2)
OOP DASAR pada PHP #15 - Interface