Belajar PHP OOP Part 1.17 : Abstract Class
- Saat kita membuat class, kita bisa menjadikan sebuah class sebagai abstract class
- Abstract class artinya, class tersebut tidak bisa dibuat sebagai object secara langsung, hanya bisa diturunkan
- Untuk membuat sebuah class menjadi abstract, kita bisa menggunakan kata kunci abstract sebelum kata kunci class
- sehingga abstract class bisa kita gunakan sebagai kontrak child class
<?php
namespace Data;
abstract class Location{
public string $name;
}
class City extends Location
{
}
class Province extends Location
{
}
class Country extends Location
{
}
<?php
require_once "data/Location.php";
use Data\{Location ,City, Province, Country};
$location = new Location();
Abstract Function
- Saat kita membuat class yang abstract, kita bisa membuat abstract function juga di dalam class abstract tersebut
- Saat kita membuat sebuah abstract function, kita tidak boleh membuat block function untuk function tersebut
- Artinya, abstract function wajib di override di class child
- Abstract function tidak boleh memiliki access modifier private
Error Abstract Function tidak boleh ada body
<?php
namespace Data;
abstract class Animal
{
public string $name;
abstract public function run(): void
{
}
}
Class Child tidak Implementasi Function Abstract akan Error
<?php
namespace Data;
abstract class Animal
{
public string $name;
abstract public function run();
}
class Cat extends Animal
{
public function run(): void
{
echo "Cat $this->name is running" . PHP_EOL;
}
}
class Dog extends Animal
{
}
<?php
namespace Data;
abstract class Animal
{
public string $name;
abstract public function run();
}
class Cat extends Animal
{
public function run(): void
{
echo "Cat $this->name is running" . PHP_EOL;
}
}
class Dog extends Animal
{
public function run(): void
{
echo "Dog $this->name is running" . PHP_EOL;
}
}
<?php
require_once "data/Animal.php";
use Data\{Animal, Cat, Dog};
$cat = new Cat();
$cat->name= "Luna";
$cat->run();
$dog = new Dog();
$dog->name = "Doggy";
$dog->run();