0% menganggap dokumen ini bermanfaat (0 suara)
38 tayangan15 halaman

W10 A1 Java Inheritance

Diunggah oleh

Muhammad Dzaki Arta
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
38 tayangan15 halaman

W10 A1 Java Inheritance

Diunggah oleh

Muhammad Dzaki Arta
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd

Java: Inheritance

IF2210 – Semester II 2022/2023


by: Yohanes Nugroho; rev: AI, SA, YW, SAR
Inheritance
› Di Java hanya ada single inheritance.
› Penurunan selalu bersifat “public” (tidak ada penurunan
private dan protected seperti di C++).
› Kata kunci yang dipakai adalah extends.

class Lingkaran extends Bangun {


// ...
}

29/03/2023 IF2210/Java/Inheritance 2
Yang terjadi saat inheritance
› Atribut yang diturunkan dapat langsung digunakan.
› Jika dideklarasikan atribut dengan nama yang sama dengan atribut pada
superclass, atribut di superclass menjadi tersembunyi. (not recommended)
› Dapat dideklarasikan atribut baru yang tidak ada di superclass.
› Method yang diturunkan dapat langsung digunakan.
› Jika dideskripsikan method dengan nama dan signature yang sama
dengan method pada superclass, method pada superclass di-override.
› Jika dideskripsikan method statik dengan nama dan signature yang sama
dengan method statik pada superclass, method statik pada superclass
menjadi tersembunyi.
› Dapat dideklarasikan method baru yang tidak ada di superclass.
› Dapat dibuat konstruktor yang memanggil konstruktor superclass.

29/03/2023 IF2210/Java/Inheritance 3
Polymorphism
› Java menganut static polymorphism—sifat sebuah objek adalah
berdasarkan reference yang ditunjuknya, bukan tipe pada saat
deklarasi.
› Contoh:
› Lingkaran dan Segitiga diturunkan dari Bangun. Bangun
memiliki method getLuas() yang di-override oleh Lingkaran
dan Segitiga.
› Jika sebuah variabel (reference) bertipe Bangun menunjuk ke
Lingkaran, maka “sifatnya” akan seperti Lingkaran, jika
menunjuk ke Segitiga, maka “sifatnya” seperti Segitiga.

29/03/2023 IF2210/Java/Inheritance 4
Contoh - Polymorphism
Lingkaran l = new Lingkaran(10);
Segitiga s = new Segitiga(1,2,3);

Bangun b = l;
/* mencetak luas lingkaran */
System.out.println(b.getLuas());

b = s;
/* mencetak luas segitiga */
System.out.println(b.getLuas());

› Di C++, pemanggilan method getLuas() bergantung pada


cara memanggilnya.

29/03/2023 IF2210/Java/Inheritance 5
Hubungan is-a
› Jika kelas Lingkaran adalah turunan dari Bangun, maka
sebuah Lingkaran adalah sebuah Bangun juga (Lingkaran is
a Bangun).
› Maka jika sebuah method menerima parameter bertipe
Bangun, ia dapat di-supply dengan Lingkaran. Contoh:

void doSomethingTo(Bangun b) { ... }


Lingkaran l = new Lingkaran(5);
doSomethingTo(l);

29/03/2023 IF2210/Java/Inheritance 6
Method dan kelas final
› Sebuah implementasi method yang ditandai keyword final
tidak dapat di-override.
› Beberapa method di kelas Object adalah final,
contohnya: getClass(), wait()/notify() (untuk
pemrograman concurrent).
› Sebuah kelas yang ditandai keyword final tidak dapat
diturunkan.
› Contoh: kelas System, String.

29/03/2023 IF2210/Java/Inheritance 7
Kelas abstrak
› Kelas abstrak adalah kelas yang dideklarasikan dengan
keyword abstract.
› Kelas abstrak dapat berisi method abstrak.
› Kelas abstrak tidak dapat diinstansiasi.
› Kelas abstrak dapat diturunkan.
› Jika kelas turunannya tidak mengimplementasikan semua
method abstrak yang diturunkan, kelas turunan tsb. harus
dideklarasikan abstract juga.

29/03/2023 IF2210/Java/Inheritance 8
Method abstrak
› Method abstrak adalah method yang dideklarasikan tanpa
implementasi, sbb:
› Menggunakan keyword abstract,
› Tidak menggunakan { },
› Diakhiri titik koma (;).
Contoh: abstract float getLuas();
› Jika sebuah kelas memiliki method abstrak, kelas tersebut harus
abstrak juga.

29/03/2023 IF2210/Java/Inheritance 9
Contoh kelas Abstrak dan Turunannya
abstract class Bangun {
void test() {
System.out.println("Luas" + getLuas());
}
abstract float getLuas();
}

class Lingkaran extends Bangun {


float r;

@override /* anotasi ini tidak wajib */


float getLuas() { return Math.PI * r * r;}
}

29/03/2023 IF2210/Java/Inheritance 10
Keyword super
› Menginvokasi behavior dari parent class.
› Dapat digunakan untuk:
› memanggil konstruktor parent dari konstruktor turunannya,
› memanggil method milik parent dari method milik
turunannya.

29/03/2023 IF2210/Java/Inheritance 11
Memanggil konstruktor parent
› Gunakan super(...) dengan parameter yang sesuai.
› Parameter boleh kosong, seperti ini: super()
› Harus merupakan statement pertama dalam konstruktor anak.
› Harus menginvokasi super sebelum melakukan operasi yang
lain.
› Sifat super pada konstruktor:
› konstruktor default (nullary constructor) parent akan selalu
dipanggil jika super(...) tidak dipanggil.
› Terjadi constructor chaining: konstruktor semua kelas “leluhur”-nya
dipanggil.

29/03/2023 IF2210/Java/Inheritance 12
Contoh
class Person {
// ...
Person(String name) {
this.name = name;
}
}

class Student extends Person {


// ...
Student(String name, String studentId) {
super(name);
this.studentId = studentId;
}
}

29/03/2023 IF2210/Java/Inheritance 13
Memanggil method parent
› Jika suatu method meng-override method parent dan ingin
memanggil implementasi parent, gunakan sintaks seperti pada
contoh berikut:
class Person {
// ...
void print() { System.out.println("name: " + name); }
}

class Student extends Person {


// ...
void print() {
super.print();
System.out.println("id: " + studentId);
}
}

29/03/2023 IF2210/Java/Inheritance 14
Tugas Baca
› Gast, H. (2015). How to use objects: code and concepts.
Addison-Wesley Professional.
› Section 1.4, 1.6-1.8
› Buat summary min. 1 halaman, max. 3 halaman
› excluding header e.g. nama, NIM
› excluding baris kosong e.g. Enter 2×)
› Pengumpulan: Edunex

Not OK OK OK OK
29/03/2023 IF2210/Bahasa Java/Pengenalan Java 15

Anda mungkin juga menyukai