Pewarisan (inhertance)
merupakan salah satu kelebihan pemrograman berbahasa Java, di mana tujuannya
adalah untuk mengurangi pengodean (reducing
code). Dengan menggunakan konsep inhertance,
sebuah objek bisa mendapatkan properti dari objek lainnya. Teknik inhertance ini dilakukan dengan
menurunkan sifat atau method yang ada
pada superclass ke subclass-Nya.
Sebagai ilustrasi perhatikan gambar hewan berikut
ini.
Pada gambar di atas tampak bahwa semakin ke
bawah,semakin spesifik class-Nya. Class mamalia mempunyai semua sifat yang
dimiliki class hewan. Semikian juga
dengan class kambing dan class kucing yang mmemiliki seluruh
sifat yang diturunka dari class
mamalia. Dengan konsep ini karakteristik yang dimiliki class hewan cukup didefinisikan dalam class hewan saja. Class
mamalia tidak perlu otomatis class
mamalia akan mendapatkan karakteristik dari class
hewan. Dengan memanfaatkan konsep inhertance,
kita dapat menghindari penilisan kode secra berulang ulang. Kita cukup
menulisakan karakteristik yang lebih umum pada class induknya, kemudian perinciannya dapat dilakukan pada class turunannya.
Berikut ini adalah contoh dari inhertance.
class person
{
protected String nama;
protected String alamat;
public person (String namaku, String
alamatku)
{
super();
nama=namaku;
alamat=alamatku;
}
protected void hello()
{
System.out.println("Saya asli
Indonesia");
}
}
class mahasiswa extends person
{
private String nim;
public mahasiswa(String namaku, String
alamatku)
{
super(namaku, alamatku);
}
void setnim(String nimku)
{
nim=nimku;
}
void datadiri()
{
System.out.println("nama
:"+nama);
System.out.println("alamat
:"+alamat);
System.out.println("NIM
:"+nim);
}
}
class dosen extends person
{
private String Nip;
public dosen (String namaku, String
alamatku)
{
super(namaku, alamatku);
}
void setNip(String nipku)
{
Nip=nipku;
}
void datadosen()
{
System.out.println("nama
:"+nama);
System.out.println("alamat
:"+alamat);
System.out.println("NIP
:"+Nip);
}
}
Sebagai langka awal akan dibuat tiga class, yaitu class person,
class mahasiswa, dan class dosen di mana class
dosen dijadikan sebagai class
induk (superclass), sedangkan sisanya
dijadikan class turunan (subclass). Selnjutnya akan dibahas kode
program di atas satu per satu.
1.
Class person,
class ini dibuat untuk dijadikan
sebagai superclass yang berisikan
variabel String nama, String alamat. Alasannya dibuat variabel
nama dan alamat adalah karena variabel ini sangatlah umum sehingga bisa di
pakai oleh class lain seperti class mahasiswa dan class dosen
(dosen dan mahasiswa pasti mempunyai nama dan alamat). Di dalam class person terdapat method void hello dan constructor
public person.
a.
void
hello, method
tanpa nilai pengembalian yang dideklarasikan dengan visibility protected agar
method ini dapat di pakai oleh subclass-Nya. Namun jika method tersebut dideklarasikan dengan visibility private, subclass tidak akan bisa menggunakannya.
b.
public
person, merupakan constuctor,
yaitu method yang namanya sama dengan
nama class. Pada constuctor person
terdapat dua variabel input String namaku, String alamatku. Tujuan di butnya constuctor ini adalah untuk menerima input dari objek pada asaat instansiasi dilakukan. Di dalam constuctor person terdapat kata super()
yang merupakan kata kunci agar variabeel pada superclass dapat diakses oleh subclass.
2.
Class
mahasiswa, dalam kasus ini class mmahasiswa dijadikan sebagai subclass darri class person.
Dalam class mahasiswa terdapat
variabel String nim. Variabel String memiliki visibility private agar bisa
diakses oleh class yang bersangkutan saja.
a.
Void
setnim, method ber-visibility default yang memiliki parameter
input String nim. Method ini
digunakan untuk menerima input NIM.
b.
Void
datadiri, method
yang dibuat untuk menampilkan data mahasiswa yang disimpan pada variabel.
c.
Public
mahasiswa, constuctor
dari class mahasiswa yang mempunyai
dua variabel input bertipe string. Meskipun tidak memiliki variabel
String nama, String mahasiswa, class mahasiswa inhertance variabel nama
dan mahasiswa karena merupakan subclass
dari class person. Perhatikan kata super (nama, alamat). Dengan kata super, variabel nama dan alamat ada di superclass dengan diakses.
3.
Class
dosen, sama halnya dengan class mahasiswa, class dosen dalam
kasus ini dijadikan sebagai subclass
dari class person terdapat variabel String nip, yang ber-visibility private agat tidak bisa
diakses oleh class lain.
a.
Void
setNip, method ber-visibility default yang memiliki
parameter input setnip. Method ini
digunakan untuk menerima input berupa
NIP dosen bertipe string.
b.
Void
datadosen, method
yang dibuat untuk menampilkan data dosen yang disimpan pada variabel.
c.
Public
dosen, constructor
dari class dosen yang mempunyai dua
variabel input bertipr string. Sama halnya dengan class mahasiswa, meskipun tidak
bervariabel string nama, string mahasiswa, class dosen dapat inhertance
kedua variabel tersebut karena merupakan subclass
dari class person.
Setelah membuat class induk dan turunan, kita perlu menginstansiasi objek dan class tersebut agar bisa diakses.
Instansiasi objek harus dibuat pada class
main (class utama).
Berikut ini kode untuk mengakses class mahasiswa dan class dosen.
package inheritance;
public class Inheritance {
public static void main(String[] args) {
mahasiswa a=new
mahasiswa("Rizka", "Jl. Agung");
a.setnim("F1B003012");
a.hello();
a.datadiri();
System.out.println("");
dosen b=new dosen ("Nadila",
"Jl. Suka Karya");
b.setNip("A98789287");
b.hello();
b.datadiri();
}
}
Hasil saat dijalankan
Objek dapat dibuat dengan mendeklarasikan nama class dan nama i=obje dengan kata kunci new “mahasiswa a=new mahasiswa (“Dila”,”Dompu”);”. Ketika
menginstansiasi class mahasiswa,
secara otomatis interpreter Java akan memanggil constructor yang dibuat sebelumnya dan menampilkan parameter, yang
digunakan untuk memasukkan data.
1.
a.setnim
(“F1B003012”) kode ini digunakan untuk memanggil method setnim() agar bisa
dimasukan string berisi (“F1B003012”.
2.
a.datadiri(),
dengan memanggil method datadiri(),
kita bisa menampilkan nilai dari variabel yang sudah dimasukkan sebelumnya
(baik nama, alamat, maupun NIM).
3.
a.hello(),
Method hello() adalah method yang dimiliki oleh class induk (class person), namun karena class
mahasiswa merupakan turunan dari class
person, method hello() dapat
dipakai. Hal ini sama juga berlaku pada class
dosen, baik instansiasi class
maupun pemanggilan method-Nya.