Seringkali disebutkan, setiap anak itu unik. Meski mewarisi sifat - sifat orangtua mereka, Seorang anak itu tetaplah unik. Mereka memiliki sifat khas mereka sendiri. Biarpun melakukan hal yang sama, akan tetapi mereka punya cara sendiri dalam melakukannya. Misalnya dalam belajar, tiap anak memiliki cara belajarnya masing - masing. Ada yang belajar hanya dengan memperhatikan, ada yang belajar sambil diiringi musik, dan aneka cara belajar lainnya.

Begitu pula dengan class di dalam OOP. Kadang kita ingin sebuah child class (atau subclass) punya properti atau pun method yang namanya sama dengan parent classnya, tapi isinya berbeda. Misalnya kita punya parent class BangunDatar, punya properti $sisi yang diset menjadi true. Nah, kemudian kita pengen buat child class yang mewarisi (inherit) dari class BangunDatar, misalnya class Persegi, punya properti $sisi yang diset jadi 4 (persegi kan memang punya 4 sisi). Kalau kita tulis, kodenya kaya di bawah:

 class BangunDatar { 
  $sisi = true; 
 } 

 class Persegi extends BangunDatar { 
  $sisi = 4; 
 } 

Coba kamu perhatiin kode di atas. Kalau kita buat properti yang namanya sama kaya properti di parent class, nanti properti yang ada di parent class isinya bakalan ketimpa sama isi properti yang ada di child class. Begitupun kalau kita buat method, hasilnya bakalan sama. Kawan, inilah yang disebut Function Overriding.

Nah sebagai contoh yang lainnya, check this code out ya!

 <?php 

   class Buku{ 

   /* Variabel yang ada didalam kelas buku */ 

    var $judul; 

    var $harga; 

       /*br adalah tag html untuk membuat garis baru */ 

    function getHarga(){ 

      echo $this->harga ."<br/>"; 

    } 

    function getJudul(){ 

      echo $this->judul ." <br/>"; 

    } 

       /* Fungsi Spesial Construct didalam kelas buku */ 

       function __construct( $parameter1, $parameter2 ){ 

       $this->judul = $parameter1; 

    $this->harga = $parameter2; 

 } 

   } 

   Class Komik extends Buku{ 

   var $penerbit; 

   /*br adalah tag html untuk membuat garis baru */ 

   function getHarga(){ 

    echo $this->harga-5000 ."<br/>"; 

   } 

   Function setPenerbit($parameter){ 

    $this->penerbit = $parameter; 

   } 

   Function getPenerbit(){ 

    echo $this->penerbit. "<br />"; 

   } 

         /* Fungsi Spesial Construct didalam kelas Komik */ 

   function __construct( $parameter1, $parameter2, $parameter3 ){ 

   $this->judul = $parameter1; 

   $this->harga = $parameter2; 

   $this->penerbit = $parameter3; 

 } 

 } 

      /* Buat sebuah object komikkeren dari kelas komik */ 

   $komikkeren = new Komik( "One Piece", 20000, "Elexmedia" ); 

   /* Memanggil Method pada kelas komik */ 

   $komikkeren->getJudul(); 

   $komikkeren->getHarga(); 

   $komikkeren->getPenerbit(); 

 ?> 

Kalau kamu coba run di browser, hasilnya bakalan kaya gini:

One Piece 15000 Elexmedia

Nah, kalau kita perhatiin hasil kode di atas, method getHarga() pada class Buku ketimpa sama method getHarga() yang ada di class Komik. Begitupula kalau ada properti yang namanya sama, value dari properti yang ada di parent class bakalan ditimpa sama properti yang ada di child class.

Karena itulah seringkali disebutkan, Setiap anak itu unik. Meski mewarisi sifat - sifat orangtua mereka, Seorang anak itu tetaplah unik. Mereka memiliki sifat khas mereka sendiri.

Semoga bermanfaat.. ^^

Gun Gun Priatna
Software Engineer, Content Writer and Founder qadrlabs.com
Komentar

blog comments powered by Disqus