MODUL TEORI TAMBAHAN PERTEMUAN IX
PEMROGRAMAN JAVA DASAR •
PEWARISAN (INHERITANCE)
© 2007 STIKOM BALI
[PEWARISAN/INHERINTANCE PEWARISAN/INHERINTANCE]]
November 5, 2007
PENGANTAR A. PENGERTIAN PEWARISAN o
Pewarisan merupakan sebuah bentuk “penggunaan kembali” (reusability); dimana class baru dibuat dari class yang pernah ada yang (biasanya) ditambah fasilitasnya.
o
Setiap class turunan dapat menjadi class pokok (induk) untuk class turunan yang akan datang.
o
Dalam pewarisan, constructor tidak diwariskan pada class turunannya, kecuali jika digunakan perintah super.
B. JENIS PEWARISAN o
Pewarisan tunggal (single inheritance) merupakan pewarisan dari satu class pokok (induk).
o
Pewarisan ganda (multiple inheritance) merupakan pewarisan dari dua atau lebih class pokok.
o
Java tidak mendukung multiple inheritance.
Sebelum melangkah lebih jauh tentang Pewarisan ada baiknya kita mengingat pelajaran Biologi, maka salah satu cabang ilmu Biologi yang disebut Taksonomi, khusus mempelajari pengelompokkan makhluk
‐
makhluk ke dalam hirarki kelas kelas. Kita mengenal pengelompokkan ke dalam Kingdom, Phylum, Class, ‐
Order, Family, Genus, dan Spesies. Animal
Invertebrata
Pisces
Amphibia
Vertebrata
Reptilia
Kucing
Aves
Mamalia
Primata
Carnivora
Beruang
Anjing
Terrier
Hound
GreyHound
Dalmatian
Pemrograman Java Dasar | Teori Pertemuan IX
2
November 5, 2007
[PEWARISAN/INHERINTANCE PEWARISAN/INHERINTANCE]]
Dari gambar diatas yang mengambarkan hirarki dari spesies GreyHound terjadi penurunan sifat. Greyhund menurunkan sifat dari Hound, yaitu memiliki moncong dan kaki panjang. Hound menurunkan sifat dari Anjing, yaitu menggonggong. Anjing menurunkan sifat dari karnivora, yaitu memakan daging. Carnivora menurunkan sifat dari Mamalia, yaitu melahirkan dan menyusui. Mamalia menurunkan sifat dari Vertebrata, yaitu mempunyai tulang belakang. Vertebrata menurunkan sifat dari binatang (makhluk hidup) yaitu ia bernyawa. Penurunan sifat ini menurun dari tingkat hirarki paling atas ke tingkat paling bawah. Sehingga seekor GreyHound akan hidup bernyawa, mempunyai tulang belakang, menyusui, memakan daging, menggonggong dan mempunyai kaki panjang. Penurunan sifat (inheritance) ini juga ini juga diterapkan pada sebuah class di dalam pemrograman OOP dengan Java. Misalnya, dalam deklarasi program Java berikut ini: class mamalia { boolean menyusui =true; //………………………… } class Carnivora extends Mamalia { String makanan=”Daging makanan=”Daging”; ”; //………………………… } class Anjing extends Carnivora { int kaki = 4; //………………………. } class ContohPewarisan { public static void main(String[] arguments) { Anjing hound = new Anjing(); //……………………… } }
Di sini, sebuah class menurunkan sifat dari class lainnya dengan memakai kata kunci
extends.
Sehingga : •
Class Anjing menurunkan sifat dari class Carnivora.
•
Class Carnivora menurunkan sifat dari class Mamalia
Object bound merupakan instance dari class Anjing. Karena ia mempunyai class Anjing maka object hound mempunyai sifat sifat (field dan metode) dari: ‐
•
Class Anjing.
•
Class Carnivora. Karena class Anjing diturunkan dari class Carnivora
Pemrograman Java Dasar | Teori Pertemuan IX
3
November 5, 2007
•
[PEWARISAN/INHERINTANCE PEWARISAN/INHERINTANCE]]
Class Mamalia. Karena class Anjing diturunkan dari class Carnivora, yang kemudian diturunkan dari class Mamalia.
Sehingga kita dapat menuliskan program berikut ini: Anjing hound = new Anjing(); System.out.println( System.out.print ln( hound.menyusui ); System.out.println( System.out.print ln( hound.makanan ); System.out.println( System.out.print ln( hound.kaki ); Class Anjing tidak mendeklarasikan field makanan dan menyusui. Tetapi, object hound mempunyai kedua field tersebut yang diturunkan dari class Carnivora dan Mamalia.
SUPERCLASS DAN SUBCLASS Dalam pemrograman Java, kita menyebut hubungan di antara ketiga class diatas dengan pernyataan sebagai berikut: •
Class Mamalia adalah superclass dari class Carnivora.
•
Class Mamalia adalah superclass dari class Anjing.
•
Class Carnivora adalah superclass dari class Anjing.
•
Class Carnivora adalah subclass dari class Mamalia.
•
Class Anjing adalah subclass dari class Mamalia.
•
Class Anjing adalah subclass dari class Carnivora.
Sebuah subclass menurunkan sifat sifat dari superclassnya. ‐
Dalam pemrograman Java, semua class yang tidak mempunyai seperclass selalu diturunkan secara otomatis dari class java.lang.Object Dalam contoh diatas pernyataan : class Mamalia { //……………………… } Tidak mempunyai kata kunci extends, sehingga tidak mempunyai superclas yang eksplisit. Tetapi Mamalia sebenarnya mempunyai superclass java.lang.Object Hal ini diset otomatis oleh compiler Java. Sehingga kita dapat menambahkan lagi pernyataan : Class Mamalia adalah subclass dari class java.lang .Object Semua class dalam pemrograman Java adalah subclass dari class java.lang.Object (baik langsung maupun secara tidak langsung) Pernyataan subclass dan superclass dibedakan lagi menjadi dua, yaitu langsung (direct) dan tidak langsung (indirect). Sebagai contoh : •
Class Anjing adalah indirect – subclass dari class Mamalia
•
Class Anjing adalah direct – subclass dari class Carnivora Pemrograman Java Dasar | Teori Pertemuan IX
4