Pewarisan Tunggal Pada Object-Oriented Programming dengan Java Beserta Contoh Penerapannya
Daftar Isi
Dalam pemrograman, konsep Inheritance (atau Pewarisan) adalah ketika satu class mewarisi seluruh atribut dan method-method-nya ke setidaknya satu class lain. Class yang mewarisi disebut Parent class atau Superclass, dan class yang diwarisi disebut Child class atau Subclass.
Mungkin sampai sini ada yang bertanya, “Mengapa kita harus menggunakan Inheritance ini? Mengapa tidak membuat 2 atau lebih class berbeda saja seperti biasa?” Untuk menjawab pertanyaan itu, perhatikan class diagram berikut:
Terdapat 2 class pada diagram di atas, class Truck dan class SportCar. Jika dipehatikan, class Truck dan class SportCar ini memiliki kesamaan. Pada situasi seperti ini, alangkah lebih baik jika kita mengimplementasikan konsep Inheritance pada 2 class di atas. Class diagram setelah implementasi Inheritance:
Alasan pertama mengapa kita ingin mengimplementasikan Inheritance disini salah satunya adalah mengurangi redundancy. Redundancy adalah ketika di program kita terdapat beberapa baris kode yang ditulis berulang-ulang di tempat berbeda. Masalahnya? Jika kita ingin mengubah barisan kode tersebut, kita harus mengubahnya berulang-ulang juga. Bayangkan jika terdapat ribuan baris pada kode program kita, kita akan dibuat pusing mengganti barisan kode yang letaknya pasti kita lupa ada dimana saja.
Dengan menggunakan Inheritance, jika kita ingin melakukan perubahan pada kode kita, kita hanya perlu melakukan perubahan sekali saja, dan kode-kode yang lain akan ikut menyesuaikan perubahan yang baru. Selain itu, Inheritance juga dapat mengurangi penggunaan baris yang berlebihan pada kode kita.
Baca juga : Pengenalan Object Oriented Programming
Dasar-dasar Inheritance/ Pewarisan
Buatlah package baru: com.nama.praktikumpbo.pertemuan4.guided.cth1. Lalu buat class baru di dalam package cth1 dan beri nama Person, lalu salin kode berikut:
Buat class baru lagi di package yang sama dan beri ia nama Friend, tetapi kali ini biarkan class tersebut kosong. Jangan lupa tambahkan extends Person untuk menandakan bahwa class Friend tersebut merupakan ‘anak’ dari class Person.
Sekarang buatlah class Main-nya, lalu salin kode berikut:
Sekarang, coba Run!
Object f merupakan object yang dibuat dari class Friend. Akan tetapi jika kita lihat isi kode class Friend, class Friend itu kosong. Lantas mengapa di class Main, object f ini memiliki attribute name dan method talk()? Asisten Praktikum kalian akan menjelaskan mengapa hal ini bisa terjadi.
Super Constructor dan Sub Constructor
Buatlah class baru di dalam package guided dan beri ia nama cth2. Jika package baru anda terlihat seperti ini, anda berada di jalan yang benar: com.nama.praktikumpbo.pertemuan4.guided.cth2. Di dalam package baru tersebut, buatlah class baru bernama Animal, lalu salin kode berikut:
Sekarang kita buat class baru yang meng-Inherit class Animal di atas. Class baru ini kita beri nama class Cat. Salin kode berikut:
Buat class baru lagi, kali ini beri ia nama class Dog. Salin kode berikut:
Sekarang, buat class lagi bernama Rabbit, lalu salin kode berikut:
Terakhir, kita buat Main-nya. Buat class bernama Main dan salin kode berikut:
Sekarang, run kodenya!
Pada kasus ini, kita membuat 3 object yang masing-masing object-nya dibuat dari 3 class berbeda. Walau pada class Cat, Dog, dan Rabbit tidak secara eksplisit dituliskan deklarasi variable name dan method profile(), karena 3 class tersebut merupakan Subclass atau Child class dari class Animal, mereka secara otomatis akan memiliki attribute-attribute dan method-method yang dimiliki oleh class Animal.
Baca juga : Pengenalan Class dan Object
Namun bagaimana ceritanya jika kita ingin membuat array yang dapat menampung object-object buatan 3 class tersebut? Mari kita cari tahu bersama! Tambahkan 2 baris kode experimental berikut tepat di bawah rabbit.showProfile():
Class object garfield adalah Animal, tetapi nilainya kita masukan constructor class Cat. Jika kita memanggil method profile(), method profile() mana yang akan terpanggil? Apakah yang tertulis di class Animal atau yang tertulis di class Cat? Coba run saja 😉
Hasil screenshot running program, dengan mengabaikan kode-kode sebelumnya:
Ternyata, walau tipe data object garfield adalah Animal, tetapi isinya ia menggunakan isi class Cat!
Array of Object of Inherited Classes
Berdasarkan hasil eksperimen di atas, ternyata kita bisa membuat object yang class-nya adalah Parent class-nya, tetapi nilainya adalah object Child class-nya. Dari percobaan tersebut, hipotesis kita adalah kita dapat menggunakan class Animal sebagai tipe data array, dan array tersebut akan dapat menampung object-object buatan class Cat, Dog, dan Animal. Sekarang mari kita buktikan bersama!
Buatlah class Main2, lalu salin kode berikut:
Terdapat dua cara untuk melakukan menampilkan nilai array. Anda bisa menggunakan salah satu saja. Berikut adalah screenshot hasil running programnya:
Semoga bermanfaat!!