Pewarisan (Inheritance)
Tujuan Di akhir pertemuan, mahasiswa diharapkan : Memahami konsep pewarisan (inheritance) secara umum Mampu mengimplementasikan pewarisan dengan Java
Deskripsi Pewarisan Pewarisan merupakan mekanisme/cara membuat kelas baru dari kelas yang sudah ada. Kelas yang sudah ada superclass Kelas turunan subclass Superclass bersifat lebih UMUM dari subclass Subclass akan mewarisi sifat-sifat dari superclass. (Sifat : variabel & method) Keyword : extends
Contoh Pewarisan superclass subclass Bentuk Dua Dimensi Lingkaran Bujursangkar Tiga Dimensi Bola Kubus superclass subclass
Bagaimana membuat kelas B dari kelas A? Bagaimana caranya? A - varA + getA() + setA(int a) A B C Bagaimana membuat kelas B dari kelas A?
Pemanggilan Constructor pada Pewarisan Dalam hirarki pewarisan, pemanggilan constructor saat pembuatan objek akan dilakukan berurutan. Urutan pertama adalah kelas paling atas, kemudian ke turunannya, dst.
Contoh C c = new C(); A Output : Constructor A +constructor Constructor B Constructor C A +constructor B +constructor C +constructor
Kelas A
Kelas B & C Kelas B Kelas C
Overriding Method Override vs Overload Override mendefinisikan method di kelas turunan yang nama dan daftar parameternya sama dengan method di kelas induk.
Contoh Overriding Method Manusia +printData Mahasiswa +printData MhsReguler +printData
Kelas Manusia
Kelas Mahasiswa & MhsReguler
Latihan 1 Untuk kelas Bentuk : getWarna adl method yang akan mengembalikan nilai variabel warna setWarna adl method untuk mengubah nilai variabel warna printInfo adl method yang akan menuliskan “Bentuk berwarna [warna]” Untuk kelas BujurSangkar : getSisi adl method yang akan mengembalikan nilai variabel sisi setSisi adl method untuk mengubah nilai variabel sisi hitungLuas adl method yang akan mengembalikan hasil perhitungan luas bujursangkar printInfo adl method yang akan menuliskan “Bujursangkar berwarna [warna], luas = [luas]” Bentuk - warna + constructor (String warna) + String getWarna() + void setWarna(String warna) + void printInfo() BujurSangkar - sisi + constructor (double sisi, String warna) + double getSisi() + void setSisi(double sisi) + double hitungLuas() + void printInfo()
Latihan 2 Buatlah kelas Lingkaran sbg turunan kelas Bentuk. Lingkaran constructor akan menginisialisasi radius dan warna getRadius adl method yang akan mengembalikan nilai variabel radius setRadius adl method untuk mengubah nilai variabel radius hitungLuas adl method yang akan mengembalikan hasil perhitungan luas lingkaran (PHI jadikan sbg konstanta kelas) printInfo adl method yang akan menuliskan “Lingkaran [warna], luas = [luas]” Lingkaran - radius + constructor (double radius, String warna) + double getRadius() + void setRadius(double r) + double hitungLuas() + void printInfo()
Latihan 3 Buatlah kelas Silinder sbg turunan kelas Lingkaran constructor akan menginisialisasi variabel tinggi, radius, dan warna getTinggi adl method yg akan mengembalikan tinggi setTinggi adl method yg akan mengubah tinggi hitungVolume adl method yg akan mengembalikan hasil perhitungan volum silinder printInfo adl method yg akan menuliskan “Silinder warna [warna], volume = [volume]” Silinder - tinggi + constructor (double tinggi, double radius, String warna) + double getTinggi() + void setTinggi(double t) + double hitungVolume() + void printInfo()
polimorfisme (polymorphisme)
Deskripsi Polimorfisme Terdapat 3 objek : bebek, anjing, dan kucing Ketiganya diberikan perintah yang sama : speak Ketiga objek memberikan respon yang berbeda untuk perintah yang sama Inilah POLIMORFISME
Definisi Polimorfisme Adalah kemampuan sebuah variabel reference untuk memberikan respon yang berbeda thd message yang sama bergantung pada objek yang ditunjuknya. Polimorfisme melibatkan kelas-kelas yang berada pada hirarki pewarisan.
Contoh Polimorfisme (1) Output : Lingkaran berwarna Biru, luas = 314.0 Silinder berwarna Kuning, volume = 3768.0
Kelas Bentuk
Kelas Lingkaran
Kelas Silinder
Contoh Polimorfisme (2)
Kelas Animal Kelas Eagle
Kelas Frog Kelas Fish
abstract class
Deskripsi Abstract Class Abstract class adalah kelas yang di dalamnya terdapat method abstrak. Method abstrak adalah method yang hanya terdiri atas definisi dan tidak memiliki implementasi. Contoh : public void printInfo(); Tujuan membuat kelas abstrak adalah menyediakan kelas yang memiliki method-method yang dapat digunakan bersama oleh kelas-kelas turunannya.
Kita tidak dapat membuat objek dari kelas abstrak, tetapi kita dapat membuat variabel bertipe kelas abstrak. Kelas turunan dari kelas abstrak harus meng-override method abstrak dan melengkapinya. Jika tidak maka kelas turunan tsb juga menjadi kelas abstrak.
Contoh Abstract Class Staf abstract void bayarGaji() Programmer +public void bayarGaji() SistemAnalis +public void bayarGaji()
Kelas Staf Kelas Programmer
Kelas SistemAnalis
interface
Deskripsi Interface Interface adalah struktur mirip kelas yang hanya terdiri dari : konstanta dan abstract method. Format interface : interface [nama_interface] { //deklarasikan konstanta //deklarasikan method abstrak }
Cara menggunakan interface : membuat kelas yang implements interface Kelas yang implements interface wajib mengoverride seluruh method yang ada di interface. Sama dg abstract class, interface tidak dapat diinstansiasi tp kita dapat membuat variabel yang bertipe interface. Sama dg abstract class, interface juga dapat berperan dalam POLIMORFISME.