Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Inheritance (Pewarisan) As’ad Djamalilleil

Presentasi serupa


Presentasi berjudul: "Inheritance (Pewarisan) As’ad Djamalilleil"— Transcript presentasi:

1 Inheritance (Pewarisan) As’ad Djamalilleil http://kampusku.uni.me asad.kom@gmail.com

2 Sekilas tentang pewarisan Seorang ayah dapat mewariskan beberapa sifat yang sama pada anak- anaknya, konsep tersebut dikenal dengan istilah inheritance Namun setiap anak dapat memiliki sifat yang berbeda dan tidak dimiliki oleh ayah maupun saudara-saudaranya, konsep ini dikenal dengan polymorphism

3 Inheritance adalah salah satu fitur pada Java yang digunakan untuk membuat beberapa class turunan (sub-class) dari sebuah class lain (super-class) Setiap sub-class dapat memiliki perbedaan bentuk (morph) di antara sub- sub class yang lain pada level yang sama Bentuk yang dimaksud adalah class member yang dimiliki oleh class tersebut

4 Class member diartikan sebagai property dan function yang dimiliki oleh sebuah class Class Gelas tinggi diameter kosong warna pegangan diisi( ) diminum( ) dipecahkan( ) isiMaksimum( ) class member dari class Gelas

5 Syntax Inheritance class subClass extends superClass { // definisi class } Keterangan: subClass  nama class turunan yang kita buat, merupakan sub-class dari sebuah class lain superClass  class yang kita ingin wariskan sifat-sifatnya ke class baru yang kita buat

6 Ilustrasi Inheritance subClass superClass > Hasil dari inheritance adalah class member pada superClass akan diwariskan kepada subClass Sehingga subClass JUGA memiliki class member yang sama dengan superClass (bergantung dari modifier yang diberikan)

7 Contoh kode dengan inheritance (9.1) class Kendaraan{ boolean mesin; int kapasitas; void jalan(){ } void berhenti(){ } class Mobil extends Kendaraan{ public static void main(String args[]){ Mobil sedan = new Mobil(); sedan.mesin = true; sedan.kapasitas = 5; sedan.jalan(); sedan.berhenti(); }

8 Ilustrasi program 9.1 Class Mobil merupakan turunan dari class Kendaraan, sehingga class member dari Kendaraan diwariskan kepada Mobil Class Mobil tidak perlu mendefinisikan ulang seluruh class member tersebut karena secara otomatis dimiliki oleh class Mobil class Kendaraan mesin kapasitas jalan( ) berhenti( ) > class Mobil mesin kapasitas jalan( ) berhenti( )

9 Sebelum menggunakan inheritance lebih jauh, ada baiknya kita pelajari terlebih dahulu tentang access level berupa beberapa macam modifier Modifier dapat digunakan untuk mengendalikan akses terhadap class maupun class member di dalam class tersebut

10 Access level sebuah class ModifierPackageSub-classClass lain publicYa tanpa modifierYaTidak

11 Class yang memiliki modifier public dapat terlihat oleh semua class lain Class yang tidak memiliki modifier (diistilahkan juga dengan package-private) hanya dapat terlihat oleh class-class yang berada dalam package yang sama dengan class tersebut

12 Contoh class modifier public //program 9.2a //nama file:Coba.java //class Coba berada //dalam package prog package prog; public class Coba{ }

13 //program 9.2b //nama file:Saja.java //class ini berada dalam package yg sama //dengan class Coba package prog; class Saja{ public static void main(String args[]){ Coba akses = new Coba(); }

14 //program 9.2c //nama file:Turunan.java //class ini berada di luar package prog //dan merupakan turunan dari class Coba import prog.Coba; class Turunan extends Coba{ }

15 //program 9.2d //nama file:Lagi.java //class ini berada di luar package prog import prog.Coba; class Lagi{ public static void main(String args[]){ Coba baca = new Coba(); }

16 Ilustrasi kode program 9.2 class Lagi package prog public class Coba class Saja Class Coba dapat diakses oleh class di luar package prog karena class Coba bersifat public class Turunan >

17 Class tanpa modifier Apabila program 9.2a kita modifikasi dengan menghilangkan modifier public, maka class Coba secara default akan dianggap memiliki modifier package- private Hasilnya adalah class Lagi dan Turunan tidak dapat lagi mengakses class Coba karena kedua class tersebut berada di luar dari package prog (package dimana class Coba tersimpan)

18 class Lagi package prog class Coba class Saja Class Coba tidak dapat diakses oleh class di luar package prog karena class Coba tidak memiliki modifier atau diistilahkan dengan package-private class Turunan >

19 Access level pada class member ModifierClassPackageSub- class Class lain publicYa protectedYa Tidak tanpa modifier Ya Tidak privateYaTidak

20 Class member yang memiliki modifier public dapat diakses oleh semua class dimanapun class itu berada Class member yang memiliki modifier protected dapat diakses hanya oleh class- class yang berada dalam package yang sama dan sub-class pada package yang lain Class member tanpa modifier hanya dapat diakses oleh class-class dalam package yang sama

21 Class member yang memiliki modifier private hanya dapat diakses dari dalam class tersebut saja Amati contoh kode program 9.3

22 //program 9.3a. Nama file:Coba.java package prog; public class Coba{ public int varA; protected int varB; int varC; private int varD; public static void main(String args[]){ Coba buat = new Coba(); buat.varA = 1; //sukses buat.varB = 3; //sukses buat.varC = 5; //sukses buat.varD = 7; //sukses }

23 //program 9.3b. Nama file:Saja.java package prog; class Saja{ public static void main(String args[]){ Coba akses = new Coba(); akses.varA = 1; //sukses akses.varB = 3; //sukses akses.varC = 5; //sukses akses.varD = 7; //error }

24 //program 9.3c. Nama file:Turunan.java import prog.Coba; class Turunan extends Coba{ public static void main(String args[]){ Turunan sifat = new Turunan(); sifat.varA = 1; //sukses sifat.varB = 3; //sukses sifat.varC = 5; //error sifat.varD = 7; //error }

25 //program 9.3d. Nama file:Lagi.java import prog.Coba; class Lagi{ public static void main(String args[]){ Coba baca = new Coba(); baca.varA = 1; //sukses baca.varB = 3; //error baca.varC = 5; //error baca.varD = 7; //error }

26 Ilustrasi kode program 9.3 package prog class Saja class Coba varA varB varC varD objek akses varA varB varC class Lagi objek baca varA class Turunan objek sifat varA varB >

27 Class Saja, Turunan, dan Lagi tidak dapat mengakses varD karena varD bersifat private sehingga hanya bisa diakses dari dalam class Coba Class Turunan dan Lagi tidak dapat mengakses varC karena varC bersifat package-private sehingga hanya bisa diakses dari dalam package prog Class Lagi tidak dapat mengakses varB karena varB bersifat protected sehingga hanya bisa diakses dari dalam package prog atau dari class yang merupakan sub- class Coba

28 Over-riding Over-riding terjadi bila sebuah function yang merupakan warisan dari super-class dialihkan (over-ride) atau didefinisi ulang isinya sehingga tidak lagi berisi definisi asli Teknik ini digunakan untuk mengubah definisi dari function agar lebih spesifik dan sesuai dengan sub-class yang dirancang Berikut adalah contoh over-riding (9.4)

29 // program 9.4. contoh over-riding class Kendaraan{ boolean mesin; int kapasitas; void jalan(){ System.out.println("kendaraan dijalankan"); } void berhenti(){} } class Mobil extends Kendaraan{ void jalan(){ System.out.println("masukkan kunci"); System.out.println("putar kunci"); System.out.println("injak gas"); }

30 public static void main(String args[]){ Mobil sedan = new Mobil(); sedan.jalan(); }

31 Class Kendaraan memiliki function jalan() dengan definisi tertentu Class Mobil merupakan sub-class dari class Kendaraan Pada class Mobil, definisi function jalan() yang baru meng-over-ride function jalan() dari class Kendaraan, sehingga apabila dijalankan maka akan memberikan output yang berbeda dengan function di super- class-nya

32 Polymorphism Poly  banyak. Morph  bentuk Polymorphism adalah teknik di Java yang berhubungan erat dengan inheritance Polymorphism diartikan sebagai beberapa sub-class yang berasal dari super-class yang sama namun memiliki karakteristik/bentuk yang berbeda di antara sub-sub class tersebut Perhatikan kode program 9.5 berikut:

33 //program 9.5. contoh polymorphism class Kendaraan{ boolean mesin; int kapasitas; void jalan(){} void berhenti(){} } class Mobil extends Kendaraan{ void injakRem(){} } class SepedaMotor extends Kendaraan{ boolean standard; void gantiOli(){} }

34 class Kendaraan mesin kapasitas jalan( ) berhenti( ) class Mobil mesin kapasitas jalan( ) berhenti( ) injakRem( ) class SepedaMotor mesin kapasitas jalan( ) berhenti( ) gantiOli( ) standard >

35 Class SepedaMotor dan Mobil merupakan sub-class dari Kendaraan Class SepedaMotor dan Mobil mewarisi class member dari Kendaraan Namun class SepedaMotor dan Mobil tidak identik karena masing-masing memiliki perbedaan bentuk SepedaMotor memiliki tambahan member, yaitu standard dan gantiOli() sedangkan Mobil memiliki tambahan member yaitu injakRem()


Download ppt "Inheritance (Pewarisan) As’ad Djamalilleil"

Presentasi serupa


Iklan oleh Google