Thursday, December 4, 2014

Tutorial PHP OOP Part 19 : Final Class dan Final Method

Pada PHP 5 diperkenalkan penggunaan keyword "final" pada class dan method. Final class adalah class yang tidak bisa diwarisi (inheritance) oleh class lain. Dengan kata lain class ini merupakan end-class yang tidak bisa diturunkan kepada class lain. Dan jika kita mencoba membuat class dengan inherit kepada final class akan muncul error.

Selain final class, dikenal juga final method, artinya kita tidak bisa menimpa sebuah final method yang ada pada class induk melalui class anak. Dengan begitu kita tidak bisa mendefinisikan ulang final class yang ada pada class induk di class anak. Jika hal ini dilakukan juga akan muncul error.

Jika ada final class dan final method, lalu bagaimana dengan final properti?

Jawabannya adalah sebuah properti tidak bisa dideklarasikan sebagai final, hanya class dan method saja yang bisa.

Membuat Final Class

Untuk membuat final class kita cukup menaruh keyword "final" sebelum keyword class.
final class nama_class {
   //... isi class
}

Contoh Penggunaan Final Class

Sebuah final class tidak bisa diwarisi (inherit) oleh class lain. Jika ini dilakukan akan muncul Fatal error: Class ... may not inherit from final class.

Untuk lebih jelas perhatikan contoh berikut ini :
 <?php  
 final class Induk {  
      public function Test() {  
           return "Display Test Pada Induk";  
      }  
 }  

 class Anak extends Induk {  
      public function Test() {  
           return "Display Test Pada Anak";  
      }  
 }  

 $object = new Induk;  
 echo $object->Test();  
 ?>  
Jika program diatas dijalankan maka akan muncul error :
Fatal error: Class Anak may not inherit from final class (Induk) in /home/sabrina/www/php/index.php on line 12

Membuat FInal Method

Untuk membuat final method kita cukup menaruh keyword "final" sebelum keyword public function.
final public function nama_method(){
   //... isi method
}

Contoh Penggunaan Final Method

Sebagaimana dengan final class, sebuah final method pada class induk juga tidak bisa ditimpa pada class anak. Jika ini dilakukan akan muncul Fatal error: Cannot override final method Induk::namaMethod().

Untuk lebih jelas perhatikan contoh berikut ini :
 <?php  
 class Induk {  
      final public function Test() {  
           return "Display Test Pada Induk";  
      }  
 }  
 class Anak extends Induk {  
      public function Test() {  
           return "Display Test Pada Anak";  
      }  
 }  
 $object = new Anak;  
 echo $object->Test();  
 ?>  
Jika program diatas dijalankan maka akan muncul error :
Fatal error: Cannot override final method Induk::Test() in /home/sabrina/www/php/index.php on line 12

Referensi :

0 komentar

Post a Comment