Pemrograman Berorientasi Objek INHERITANCE Oleh : Sri Herawati, S.Kom D3 MANAJEMEN INFORMATIKA FAKULTAS TEKNIK UNIVERSITAS TRUNOJOYO
Sub Topik Inheritance (Pewarisan) Abstract class Abstract Method Interface
Inheritance Inheritance merupakan salah satu dari 3 konsep dasar OOP. Konsep inheritance ini mengadopsi dunia riil dimana suatu entitas/obyek dapat mempunyai entitas/obyek turunan. Dengan konsep inheritance, sebuah class dapat mempunyai class turunan.
Inheritance Suatu class yang mempunyai class turunan dinamakan parent class atau base class superclass Sedangkan class turunan itu sendiri seringkali disebut subclass atau child class. Suatu subclass dapat mewarisi apa-apa yang dipunyai oleh parent class. Misal : kelas B adalah kelas anak dari kelas A, maka sifat – sifat dari kelas A otomatis akan dimiliki juga oleh kelas B.
Inheratance Dengan menambahkan kata kunci extends setelah deklarasi nama class, kemudian diikuti dengan nama parent class-nya. Kata kunci extends tersebut memberitahu kompiler Java bahwa kita ingin melakukan perluasan class. Bentuk : class kelasturunan extends kelasparent { tubuhkelas }
Inheritance Kita baru perlu menerapkan inheritance pada saat kita jumpai ada suatu class yang dapat diperluas dari class lain. Konsep inheritance yang ada di Java adalah Java hanya memperkenankan adanya single inheritance. Konsep single inheritance hanya memperbolehkan suatu sublass mempunyai satu parent class.
Contoh : parent class class Alpha{ private int a = 5; public void info(){ System.out.println("a= "+a); System.out.println("Dipanggil pada "+ this.getClass().getName()); } Ket : this.getClass().getName() utk memperoleh nama kelas
Contoh : child class class Bravo extends Alpha { public static void main(String[] args){ Bravo obj= new Bravo(); obj.info(); }
Hasil :
Penentu akses protected protected berguna utk mengatur agar suatu variabel instan atau metode yg terdapat pada sebuah kelas dpt diakses pada kelas itu sendiri dan sub kelas.
Contoh :parent class class Alpha{ private int a = 5; protected int b = 7; public void info(){ System.out.println("Dipanggil pada "+ this.getClass().getName()); System.out.println("a= "+ a); System.out.println("b= "+ b); }
Contoh : child class class Delta extends Alpha { private int c = 9; public void info(){ System.out.println("Dipanggil pada " + this.getClass().getName()); System.out.println("b = " + b); System.out.println("c = " + c); }
Memanggil parent dan child class class PenentuProtect { public static void main(String[] args){ Alpha objx = new Alpha(); objx.info(); Delta objy = new Delta(); objy.info(); }
Metode superkelas Cara untuk memanggil metode superkelas dari subkelas dgn kata kunci super yang berarti superkelas.
Contoh : class Echo extends Alpha { private int c = 9; public void info(){ super.info(); System.out.println("c = " + c); }
class superkelas { public static void main(String[] args) Echo obj = new Echo(); obj.info(); }
Konstruktor Konstruktor adalah metode yg dpt digunakan utk memberikan nilai awal saat objek diciptakan. Sifat kontruktor : namanya sama dgn nama kelas tidak memiliki nilai balik ( tdk boleh ada kata kunci void) Contoh : new Mobil(“Merah”, 2003)
Overloading Overloading adalah suatu mekanisme pembuatan kontruktor yg memiliki bentuk lebih dari satu. Misal: new Mobil(“Merah”,2003) new Mobil()
Contoh : class Mobil{ //variabel instan private String warna; private int tahunproduksi; //konstruktor pertama public Mobil(String warna,int tahunproduksi){ this.warna = warna; this.tahunproduksi=tahunproduksi; } //konstruktor kedua public Mobil(){ //metode public void info(){ System.out.println("Warna : " +this.warna); System.out.println("Tahun : " +this.tahunproduksi); } public class kontruktor{ public static void main(String[] args){ Mobil mobilku = new Mobil("Merah", 2003); mobilku.info(); Mobil mobilmu = new Mobil(); mobilmu.info();
Abstract class & Abstract Method Method abstract adalah suatu metode yg ditentukan dari dalam kelas tetapi tidak disertai dengan definisinya. Class abstract adalah kelas yg tidak disertai definisinya.
Contoh : class dan method abstact public abstract class kendaraan { protected String nama; public abstract void jalankan(); }
Contoh :tesabstrak class Sepeda extends kendaraan{ public Sepeda(String nama){ this.nama = nama; } public void jalankan(){ System.out.println("Duduklah di atas sadel " +this.nama + " dan kayuhlah.."); class Minibus extends kendaraan{ public Minibus(String nama){ public void jalankan(){ System.out.println("Duduklah di atas setir " +this.nama + " dan hidupkan mesin.."); } public class tesabstrak{ public static void main(String[] args){ Sepeda sepedaku = new Sepeda("sepeda ontel"); sepedaku.jalankan(); Minibus mobilku = new Minibus("Minibus Keri"); mobilku.jalankan();
Interface Interface adalah mekanisme yg memungkinkan berbagi konstanta atau menentukan bentuk metode yg dpt digunakan oleh sejumlah kelas. Variabel dlm interface hanya diperkenankan utk menggunakan public static final.
Mendeklarasikan interface Bentuk : public interface namainterface{ //metode tanpa implementasi //definisi konstanta }
Menggunakan interface Sebuah class dpt menggunakan interface melalui kata kunci implements. Bentuk : class namakelas1 [extends namakelas2] implements namainterface1[,namainterface2]{ //tubuh kelas }
Contoh : interface Intlampu{ public static final int keadaan_hidup =1; public static final int keadaan_mati =0; public abstract void hidupkan(); public abstract void matikan(); } //akhir interface interface Intlampupenyuram extends Intlampu{ public static final int posisi_maks =10; public static final int posisi_min =0; public abstract void redupkan(); public abstract void buatlebihterang(); }
Contoh : class lampupenyuram implements Intlampupenyuram{ private int statuslampu = 0; public void hidupkan(){ this.statuslampu = posisi_maks; System.out.print("hidupkan!: "); System.out.print("Lampu hidup. "); System.out.println("Posisi tombol : " + this.statuslampu); } public void matikan() { this.statuslampu = posisi_min; System.out.print("Matikan ! : "); System.out.println("Lampu mati.");
Contoh: public void redupkan(){ if (this.statuslampu != posisi_min); this.statuslampu--; System.out.print("redupkan! : "); if (this.statuslampu ==posisi_min) System.out.println("Lampu mati"); else { System.out.print("Lampu Hidup. "); System.out.println("Posisi tombol : " + this.statuslampu); }
Contoh: public void buatlebihterang(){ if (this.statuslampu != posisi_maks); this.statuslampu++; System.out.print("Buat lebih terang "); System.out.print("Lampu Hidup. "); System.out.println("Posisi tombol : " + this.statuslampu); } } //akhir kelas
Contoh: public class tesinterface{ public static void main(String[] args){ lampupenyuram lampukamar = new lampupenyuram(); lampukamar.hidupkan(); lampukamar.redupkan(); lampukamar.buatlebihterang(); lampukamar.matikan(); }