Anda di halaman 1dari 31

Inheritance,

Polymorphism,
Inner Class,
Pertemuan 4
Sam FCH
Inheritance
(Turunan/Pewarisan)
Inheritance
• Inheritance (Penurunan/Pewarisan) adalah teknik untuk
membuat class baru (subclass) yang memiliki sifat sama
(atau mirip) dengan class yang menurunkannya (superclass).
• Kelas turunan (subclass) akan mewarisi (inherit) data field
(properti atau atribut) dan metoda terakses (accessible
methods) yang dimiliki oleh superclass
• Superclass akan mempunyai sifat lebih umum (general),
sedangkan kelas turunannya akan lebih spesifik. Umumnya,
kelas turunan mempunyai data field dan metoda tambahan
selain data field dan metoda yang diwarisi dari superclass.
Inheritance
• Penekanan konsep turunan adalah penggunaan kelas yang
sudah ada (reusability).
• Konsep turunan dapat mempersingkat waktu pendefinisian
subclass.
• Sekali sebuah subclass didefinisikan, kelas tersebut dapat
menjadi superclass untuk subclass yang lain.
• Kelas tertinggi dalam Java adalah kelas Object. Semua kelas,
langsung maupun tidak langsung, merupakan turunan dari
kelas Object.
• Salah satu metoda istimewa yang dimiliki oleh kelas Object
adalah metoda toString() yang merupakan string
representation dari sebuah obyek.
Inheritance
• Untuk menurunkan class kita menggunakan
keyword extends pada deklarasi subclass-nya:
Aturan Pewarisan
1. Java tidak mengijinkan pewarisan berganda
dimana satu subclass mewarisi dua atau lebih
superclass. Hal ini dapat dilakukan dalam C++
namun tidak pada Java. Alasan untuk banyak,
salah satunya adalah design dari bahasa Java
sendiri, yang dibuat agar mudah (simple)
• Baca di :
http://www.javaworld.com/article/2077394/core-
java/why-not-multiple-inheritance.html
Aturan Pewarisan
• Kita dapat menurunkan subclass dari subclass yang
lain, karena pada dasarnya subclass adalah juga
class biasa. Ini juga salah satu pendekatan untuk
menjawab no 1.
Keyword “super”
• Jika kita mendeklarasikan properti pada subclass
dengan nama yang sama dengan properti yang ada
pada superclass, maka kita menggunakan keyword
super untuk memanggil properti pada superclass
dengan nama yang sama:
Urutan eksekusi Constructor pada
turunan
• Suatu subclass akan mewarisi juga Constructor dari
superclass-nya.
• Urutan eksekusinya dimulai dari Constructor
superclass hingga ke subclass terendah
• Jika Constructor pada super class memiliki lebih dari
satu bentuk Constructor maka kita dapat memanggil
Constructor tertentu dengan:
• super() -> untuk memanggil constructor default tanpa
parameter
• super(daftar-parameter) -> untuk memanggil constructor
dengan parameter
Polymorphism
Polymorphism
• Polymorphism berarti banyak bentuk.
• Ada beberapa definisi berbeda tentang
polymorphism yang berkaitan dengan
pemrograman berorientasi obyek. Sedangkan apa
yang dimaksud dengan polymorphism sendiri,
sebenarnya sulit untuk didefinisikan.
• Polymorphism sering dikaitkan dengan penamaan
yang sama pada method dalam class yang berbeda.
• Walaupun dengan nama yang sama, namun dapat
dibuat untuk melakukan behavior yang berbeda
Type Polymorphism
1. Static atau trivial
• Disebut juga method overloading -> penggunaan
kembali nama fungsi yang sama tapi dengan
argumen yang berbeda.
• Contoh function overloading :
• void tambah (int a, int b);
• void tambah(float d, float c);
Method overloading

Nama sama
parameter
berbeda
Type Polymorphism
2. Dynamic atau true
• Disebut juga method overriding -> sebuah fungsi
dalam subclass yang memiliki nama, return  type 
dan argumen yang sama dengan fungsi dalam
superclass namun dapat memiliki behavior yang
berbeda
Method Overriding

Nama, parameter dan


return type sama. Ditandai
dengan annotation
@Override
Keyword “final”
• Ada dua fungsi keyword final:
• Jika pada properti maka properti tersebut akan
diperlakukan seperti Konstanta
• Jika pada method dalam superclass maka final akan
membuat method tidak dapat di override dari
subclassnya.
Keyword “final”

Method final tidak dapat di


override
Inner Class
Inner Class
• Di dalam java anda dapat mendeklarasikan sebuah
class di dalam class yang lain
• Class yang berada di dalam disebut dengan inner
class
• Sedangkan class dimana inner class berada disebut
sebagai outer class
Contoh Inner Class
Karakteristik Inner Class
1. Karena inner class merupakan bagian dari class
maka kita dapat mendeklarasikannya dengan
access specifier:
Inner class Bab
dengan private
access specifier
Karakteristik Inner Class
2. Inner class dapat mengakses semua member
(variable, method) dari outer class dan sebaliknya
tanpa terpengaruh oleh access specifier yang ada
Mengakses method
private dari inner
class

Mengakses method
private dari outer
class
Karakteristik Inner Class
3. Inner class dapat digunakan layaknya class
normal yang lain namun, untuk mengakses dari
class selain outer class-nya bergantung pada
access specifier-nya
Mengakses inner
class dari object
outer class-nya
Mengakses member
dari object inner
class

Bisa atau tidaknya inner class dan membernya diakses, bergantung pada
access specifier-nya
Karakteristik Inner Class
4. Kita hanya dapat membuat instance dari inner
class dengan new di dalam outer class-nya saja,
kecuali jika sudah ada object dari outer class-nya
seperti pada no 3.
Keyword “static”
• Pada contoh-contoh sebelumnya ketika kita akan
mengakses member dari sebuah class, kita harus
membuat instancenya terlebih dahulu
• Namun terkadang diperlukan untuk mengakses
member tanpa harus membuat instancenya
terlebih dahulu.
• Untuk keperluan ini kita dapat menggunakan
keyword static
Ilustrasi keyword “static”
• Misalkan seorang Arsitek yang sudah membuat
desain sebuah gedung tidak akan dapat
menggunakan ruangan dalam gedung sebelum
gedung benar-benar dibuat, namun kita masih
dapat menggunakan property yang ada bahkan
sebelum gedung dibuat seperti : luas ruangan,
tinggi ruangan, jumlah ruangan, dll
Contoh keyword “static”

Mengakses properti static harga buku


tanpa membuat instance class Buku
Aturan keyword “static”
• Hanya dapat dipanggil oleh method lain yang juga
static
• Hanya dapat mengakses properti yang juga static

Mengakses
properti static
dari method
static
Terima Kasih

Anda mungkin juga menyukai