Tutorial PHP

RUMAH PHP Pengenalan PHP Instal PHP Sintaks PHP Komentar PHP Variabel PHP PHP Gema / Cetak Tipe Data PHP String PHP Nomor PHP PHP Matematika Konstanta PHP Operator PHP PHP Jika...Lain...Elseif Beralih PHP PHP Loop Fungsi PHP Array PHP PHP Superglobal PHP RegEx

Formulir PHP

Penanganan Formulir PHP Validasi Formulir PHP Diperlukan Formulir PHP URL/Email Formulir PHP Formulir PHP Lengkap

PHP Lanjutan

Tanggal dan Waktu PHP PHP Termasuk Penanganan File PHP File PHP Buka/Baca Membuat/Menulis File PHP Unggah File PHP Cookie PHP Sesi PHP Filter PHP Filter PHP Tingkat Lanjut Fungsi Panggilan Balik PHP PHP JSON Pengecualian PHP

PHP OOP

PHP Apa itu OOP Kelas/Objek PHP Konstruktor PHP Penghancur PHP Pengubah Akses PHP Warisan PHP Konstanta PHP Kelas Abstrak PHP Antarmuka PHP Ciri-ciri PHP Metode Statis PHP Properti Statis PHP Ruang Nama PHP PHP Iterable

Database MySQL

Database MySQL Koneksi MySQL MySQL Buat DB MySQL Buat Tabel MySQL Sisipkan Data MySQL Dapatkan ID Terakhir MySQL Sisipkan Beberapa MySQL Disiapkan MySQL Pilih Data MySQL Dimana MySQL Dipesan Oleh MySQL Hapus Data Data Pembaruan MySQL Data Batas MySQL

PHP XML

PHP XML Parser PHP SimpleXML Parser PHP SimpleXML - Dapatkan PHP XML Ekspat PHP XML DOM

PHP - AJAX

Pengenalan AJAX AJAX PHP Basis Data AJAX AJAX XML Pencarian Langsung AJAX Jajak Pendapat AJAX

Contoh PHP

Contoh PHP Kompilator PHP Kuis PHP Latihan PHP Sertifikat PHP

Referensi PHP

Ikhtisar PHP Array PHP Kalender PHP Tanggal PHP Direktori PHP Kesalahan PHP Pengecualian PHP Sistem File PHP Filter PHP PHP FTP PHP JSON Kata Kunci PHP PHP Libxml Surat PHP PHP Matematika PHP Lain-lain PHP MySQLi Jaringan PHP Kontrol Keluaran PHP PHP RegEx PHP SimpleXML Aliran PHP String PHP Penanganan Variabel PHP PHP XML Parser PHP Zip Zona Waktu PHP

PHP OOP - Kelas Abstrak


PHP - Apa itu Kelas dan Metode Abstrak?

Kelas dan metode abstrak adalah ketika kelas induk memiliki metode bernama, tetapi membutuhkan kelas turunannya untuk mengisi tugas.

Kelas abstrak adalah kelas yang berisi setidaknya satu metode abstrak. Metode abstrak adalah metode yang dideklarasikan, tetapi tidak diimplementasikan dalam kode.

Kelas atau metode abstrak didefinisikan dengan abstract kata kunci:

Sintaksis

<?php
abstract class ParentClass {
  abstract public function someMethod1();
  abstract public function someMethod2($name, $color);
  abstract public function someMethod3() : string;
}
?>

Saat mewarisi dari kelas abstrak, metode kelas anak harus didefinisikan dengan nama yang sama, dan pengubah akses yang sama atau kurang dibatasi. Jadi, jika metode abstrak didefinisikan sebagai dilindungi, metode kelas anak harus didefinisikan sebagai dilindungi atau publik, tetapi tidak pribadi. Juga, jenis dan jumlah argumen yang diperlukan harus sama. Namun, kelas anak mungkin memiliki argumen opsional sebagai tambahan.

Jadi, ketika kelas anak diwarisi dari kelas abstrak, kami memiliki aturan berikut:

  • Metode kelas anak harus didefinisikan dengan nama yang sama dan mendeklarasikan ulang metode abstrak induk
  • Metode kelas anak harus didefinisikan dengan pengubah akses yang sama atau kurang terbatas
  • Jumlah argumen yang diperlukan harus sama. Namun, kelas anak mungkin memiliki argumen opsional sebagai tambahan

Mari kita lihat sebuah contoh:

Contoh

<?php
// Parent class
abstract class Car {
  public $name;
  public function __construct($name) {
    $this->name = $name;
  }
  abstract public function intro() : string;
}

// Child classes
class Audi extends Car {
  public function intro() : string {
    return "Choose German quality! I'm an $this->name!";
  }
}

class Volvo extends Car {
  public function intro() : string {
    return "Proud to be Swedish! I'm a $this->name!";
  }
}

class Citroen extends Car {
  public function intro() : string {
    return "French extravagance! I'm a $this->name!";
  }
}

// Create objects from the child classes
$audi = new audi("Audi");
echo $audi->intro();
echo "<br>";

$volvo = new volvo("Volvo");
echo $volvo->intro();
echo "<br>";

$citroen = new citroen("Citroen");
echo $citroen->intro();
?>

Contoh Dijelaskan

Kelas Audi, Volvo, dan Citroen diwarisi dari kelas Mobil. Ini berarti bahwa kelas Audi, Volvo, dan Citroen dapat menggunakan properti $name publik serta metode __construct() publik dari kelas Mobil karena pewarisan.

Tapi, intro() adalah metode abstrak yang harus didefinisikan di semua kelas anak dan mereka harus mengembalikan string.



PHP - Contoh Kelas Lebih Abstrak

Mari kita lihat contoh lain di mana metode abstrak memiliki argumen:

Contoh

<?php
abstract class ParentClass {
  // Abstract method with an argument
  abstract protected function prefixName($name);
}

class ChildClass extends ParentClass {
  public function prefixName($name) {
    if ($name == "John Doe") {
      $prefix = "Mr.";
    } elseif ($name == "Jane Doe") {
      $prefix = "Mrs.";
    } else {
      $prefix = "";
    }
    return "{$prefix} {$name}";
  }
}

$class = new ChildClass;
echo $class->prefixName("John Doe");
echo "<br>";
echo $class->prefixName("Jane Doe");
?>

Mari kita lihat contoh lain di mana metode abstrak memiliki argumen, dan kelas anak memiliki dua argumen opsional yang tidak didefinisikan dalam metode abstrak induknya:

Contoh

<?php
abstract class ParentClass {
  // Abstract method with an argument
  abstract protected function prefixName($name);
}

class ChildClass extends ParentClass {
  // The child class may define optional arguments that are not in the parent's abstract method
  public function prefixName($name, $separator = ".", $greet = "Dear") {
    if ($name == "John Doe") {
      $prefix = "Mr";
    } elseif ($name == "Jane Doe") {
      $prefix = "Mrs";
    } else {
      $prefix = "";
    }
    return "{$greet} {$prefix}{$separator} {$name}";
  }
}

$class = new ChildClass;
echo $class->prefixName("John Doe");
echo "<br>";
echo $class->prefixName("Jane Doe");
?>