Cara menggunakan php abstract class

Cara untuk memastikan agar child class memiliki method tertentu yang isinya tidak harus sama antara child class satu dan yang lainnya adalah menggunakan abstract class dan interface. Disini kita akan membahas abstract class.

Abstract class dideklarasikan dengan keyword abstract. Abstract class memiliki setidaknya satu abstract method. Abstract method adalah method yang hanya memiliki nama dan argumen saja : abstract protected function namaMethod().

Abstract class tidak akan dibuat instancenya, hanya digunakan untuk keperluan pembuatan child class yang akan diturunkan darinya.

Contohnya kita akan melihat bangun datar. Bangun datar bisa berupa bujursangkar, segitiga, persegi panjang, yang cara perhitungan luasnya berbeda beda.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

  abstractclassBangunDatar{

    abstractprotectedfunctionhitungLuas();

  }

  class PersegiextendsBangunDatar{

    protected$sisi=4;

    publicfunctionhitungLuas(){

      return pow($this->sisi,2);

    }

  }

  classSegitigaextendsBangunDatar{

    protected $alas=4;

    protected$tinggi=3;

    publicfunctionhitungLuas(){

      return (0.5*$this->alas*$this->tinggi);

    }

  }

  classLingkaranextends BangunDatar{

    protected$jarijari=7;

    publicfunctionhitungLuas(){

      return (3.14*pow($this->jarijari,2));

    }

  }

  $persegi=new Persegi();

  echo'Luas Persegi = '.$persegi->hitungLuas()."
"
;

  $segitiga=new Segitiga();

  echo'Luas Segitiga = '.$segitiga->hitungLuas()."
"
;

  $lingkaran=new Lingkaran();

  echo'Luas Lingkaran = '.$lingkaran->hitungLuas()."
"
;

?>

Di kode diatas terdapat abstract class BangunDatar{} yang memiliki abstract method hitungLuas(). Sehingga di setiap child dari BangunDatar{} harus mempunyai method hitungLuas().

  • Menambah Property dan Method pada Abstract Class

Menambah Property dan Method pada Abstract Class

Abstract Class juga bisa memiliki property dan method. Hanya yang membedakan dengan Class biasa adalah dia tidak akan diinstansiasi menjadi object.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

  abstractclassMobil{

    protected$volTangki;

    publicfunctionisiBensin($vol){

      $this->volTangki =$vol;

    }

    abstractprotectedfunctionjarakTempuhMaksimum();

  }

  classToyota extendsMobil{

    protected$perLiter=10;

    publicfunctionjarakTempuhMaksimum(){

      $jarakMaks =$this->perLiter*$this->volTangki;

      echo'Jarak tempuh maks Toyota '.$jarakMaks." km
"
;

    }

  }

  classSuzukiextendsMobil{

    protected$perLiter=20;

    publicfunction jarakTempuhMaksimum(){

      $jarakMaks=$this->perLiter*$this->volTangki;

      echo'Jarak tempuh maks Suzuki '.$jarakMaks." km
"
;

    }

  }

  $toyota=newToyota();

  $toyota->isiBensin(10);

  $toyota->jarakTempuhMaksimum();

  $suzuki=newSuzuki();

  $suzuki->isiBensin(10);

  $suzuki->jarakTempuhMaksimum();

?>

Pada kode diatas terdapat method isiBensin() di abstract class, yang bisa digunakan oleh child classnya. Abstract method adalah jarakTempuhMaksimum(), sehingga di setiap child Class nya harus mempunyai method ini.

Kapan kita menggunakan abstract class?

Abstract class digunakan di dalam inheritance (pewarisan class) untuk 'memaksakan' implementasi method yang sama bagi seluruh class yang diturunkan dari abstract class. Abstract class digunakan untuk membuat struktur logika penurunan di dalam pemrograman objek.

Apa itu abstract class dan method?

Abstract class adalah class yang mempunyai y g p y setidaknya satu abstract method. Abstract method adalah method yang tidak memiliki body (hanya deklarasi method) memiliki body (hanya deklarasi method). Abstract class tidak bisa dibuat obyeknya. Obyek hanya bisa dibuat dari non-abstract class (concrete class).

Jelaskan apa yg dimaksud dengan abstract class?

Konsep abstract class. Abstract class atau kelas abstrak adalah kelas yang terletak di posisi tertinggi dalam hierarki class. Class ini tidak dapat diinstansiasi karena masih bersifat abstrak. Class ini hanya berisi variabel umum dan deklarasi method tanpa detail penggunaannya (abstract method).

Apa perbedaan kelas biasa dengan class abstract?

=> Abstract class adalah sebuah class setengah jadi (abstrak) yang memuat/memiliki method dan atrribut. Abstract class sebenarnya adalah sebuah class, sehingga memiliki semua sifat dari class biasa (punya konstruktor). Hanya saja sifatnya masih abstrak, karena itu biasanya method kosong/belum di implementasikan.