Tutorial OOP Dasar Pada PHP
Inheritance
Materi ini memiliki 1 buah lampiran. Namun Anda tidak dapat mengakses lampiran karena belum terdaftar di kursus ini. Klik disini untuk mendaftar.
Pada video ini kita akan membicarakan mengenai Inheritance atau pewarisan. Dengan menggunakan fitur ini, maka kita bisa membuat sebuah kelas yang merupakan keturunan dari kelas lainnya. Sebagai contoh, sebelumnya kita sudah memiliki kelas Teacher. Kemudian kita bisa membuat kelas MathTeacher yang merupakan keturunan dari kelas Teacher.
Disini kita mengenal beberapa istilah baru ya. Kelas Teacher kita sebut juga dengan istilah parent, atau kelas induk. Sedangkan MathTeacher kita sebut dengan Child atau kelas anak. Sebagai kelas anak, MathTeacher secara otomatis memiliki semua properties dan methods milik Teacher. Artinya MathTeacher juga memiliki name, classroom dan method showInformation(). Namun MathTeacher bisa memiliki properties dan methods tambahan, misalkan disini adalah property subject yang tidak dimiliki oleh parent-nya.
Setiap kelas child, hanya bisa memiliki 1 parent. Namun parent yang sama, bisa diturunkan menjadi beberapa child. Sebagai contoh disini kelas Teacher kita turunkan menjadi MathTeacher dan CodingTeacher.
Bagaimana cara melakukan inheritance? Nah, pada saat kita membuat kelas Child, pertama kita gunakan dahulu kata kunci class diikuti oleh nama kelas Child. Setelah itu kita gunakan kata kunci extends dan nama kelas Parent-nya. Maka kelas baru child akan dibuat sebagai keturunan dari kelas parent. Agar lebih jelas, kita langsung praktek ya.
Kita buka kembali kode dari pelajaran sebelumnya. Kali ini kita akan lebih berkonsentrasi ke kelas Teacher ya. Kita buka file Teacher.php. Nah, di bagian bawah file, kita akan menambahkan kelas baru yaitu MathTeacher.
Sebelumnya disklaimer dulu ya. Berhubung tujuan video ini hanya untuk tutorial, maka kita menaruh kelas anak di dalam file Teacher juga. Nantinya kalau teman-teman sedang coding untuk proyek, sebaiknya setiap kelas ditaruh dalam file yang terpisah. Biasanya nama file-nya sama dengan nama kelasnya. Tujuannya adalah agar lebih mudah pada saat hendak mencari source code kelasnya.
Kita lanjutkan materi pelajaran. Untuk menambahkan kelas, kita tulis dahulu kata kunci class diikuti oleh nama kelasnya yaitu MathTeacher. Berhubung kelas ini adalah turunan dari kelas Teacher maka kita tambahkan lagi kata kunci extends diikuti oleh nama kelas Teacher. Setelah itu barulah kita beri kurung kurawal dan kita bisa menambahkan properties dan methods di dalam kurung kurawal.
Untuk saat ini kita coba tambahkan satu property saja ya. Kita tulis var string $subject. Lalu kita beri nilai default 'Math'. Maksudnya kelas MathTeacher ini secara khusus mengajarkan mata pelajaran matematika.
Kita buka lagi kelas main.php. Kita akan fokus ke Teacher dahulu. Jadi untuk sementara kita komentari semua source code yang berhubungan dengan Student. Kemudian agar object Teachernya lebih jelas, pada bagian paling bawah kita tambahkan perintah var_dump($skysen). Kita coba jalankan. Pada saat ini variable $skysen masih membuat objek Teacher ya. Kita lihat hasil var_dump-nya.
Saat ini variable $skysen menampung sebuah object, yang dibuat dari kelas Teacher. Kita bisa melihat di dalamnya ada 2 buah property ya, yaitu name dan classroom.
Sekarang kita ubah nama kelasnya ya. Dari Teacher menjadi MathTeacher. Perhatikan hasil var_dump-nya. Sekarang variable $skysen menjadi sebuah object yang dibuat dari kelas MathTeacher dan memiliki 3 buah property, yaitu name, classroom dan subject. Perhatikan juga sebelum var_dump kita telah memanggil method showInformation ya. Walaupun sekarang kita menggunakan kelas MathTeacher, namun method showInformation tetap bisa dipanggil dan berjalan normal.
Jadi dari hasil percobaan kita kelihatan ya. Kalau semua properties dan methods milik parent class, yaitu Teacher, secara otomatis dimiliki juga oleh child class, yaitu MathTeacher. Namun property yang dibuat pada MathTeacher seperti $subject, hanya ada pada MathTeacher.
Selanjutnya kita akan membahas mengenai fitur Method Overriding. Sebelumnya kita sudah membahas bahwa kalau kita membuat kelas child, maka secara otomatis kelas child memiliki semua properties dan methods milik parent. Namun kita masih bisa mengganti isi dari method yang diturunkan dari parent, menjadi sebuah method baru. Fitur ini dinamakan Method Overriding.
Dalam menggunakan Method Overriding, ada aturan yang harus kita ikuti. Deklarasi method pada child harus tetap sama persis dengan deklarasi method pada parent. Yang perlu diperhatikan disini adalah jumlah parameternya, tipe data yang digunakan dan juga return value dari method tersebut. Kalau ada yang berbeda, maka terjadi fatal error.
Kalau misalkan di dalam method yang kita override, ternyata kita perlu memanggil method parent-nya, maka kita bisa menggunakan kata kunci parent, diikuti oleh simbol titik dua sebanyak 2 kali, dan nama method parent. Sebagai hasilnya maka kita menjalankan method milik parent.
Pada video sebelumnya kita juga sudah belajar mengenai Constructor dan Destructor ya. Kita bisa melakukan Overriding terhadap Constructor dan Destructor. Namun kita tetap harus mengikuti aturan yang sama.
Kita coba praktek ya. Kita buka lagi file Teacher.php. Perhatikan pada kelas Teacher ada method dengan nama showInformation yang isinya menampilkan nama dan kelas. Kita akan mencoba untuk melakukan overriding method ini di kelas MathTeacher.
Kita copy deklarasi dari method showInformation dan kita paste di kelas MathTeacher. Kita buat isi yang baru ya. Misalkan kita echo "Mata pelajaran: {$this->subject}\n". Sekarang kita memiliki method dengan nama yang sama, namun isinya sama sekali berbeda ya. Kalau pada parent atau Teacher menampilkan nama dan kelas. Sedangkan pada child atau MathTeacher menampilkan mata pelajarannya.
Kita coba tes di file main.php ya. Kita komentari dahulu kode var_dump, agar kita bisa lebih fokus melihat hasil dari showInformation. Perhatikan saat ini kita menggunakan kelas MathTeacher. Kalau kode kita jalankan, maka kita mendapatkan hasil mata pelajaran. Sedangkan kalau kelasnya kita ganti menjadi Teacher dan kita jalankan, maka kita mendapatkan hasil nama dan kelas. Kita kembalikan dahulu ke kelas MathTeacher ya.
Pada saat melakuan overriding, deklarasi method pada child harus sama persis dengan parent. Kalau misalkan method pada child kita tambahkan parameter baru $a, maka terjadi fatal error. Begitu pula kalau misalkan return-nya kita ganti menjadi int.
Di dalam method yang kita override, kita tetap bisa memanggil method milik parent-nya. Sebagai contoh, di bagian paling atas dari method showInformation milik MathTeacher, kita tambahkan parent::showInformation(). Kita ganti dahulu kelas pada main menjadi MathTeacher ya. Kalau kita coba jalankan, maka kita mendapatkan informasi nama dan kelas dahulu, setelah itu baru mata pelajaran.
Posisi dari kode parent::showInformation ini bisa kita pindahkan ya. Kalau misalkan kita pindahkan ke bagian paling bawah method, dan kita jalankan. Maka kita mendapatkan mata pelajaran terlebih dahulu. Setelah itu barulah nama dan kelas. Jadi kapan kita menjalankan method milik parent, bergantung dari posisi kita menaruh kode parent::showInformation.
Dengan menggunakan fasilitas tanya jawab, maka Anda bisa bertanya dan akan dijawab langsung oleh instruktur kursus.
Anda belum terdaftar pada kursus ini sehingga tidak bisa mengajukan pertanyaan.