Pewarisan (Inheritance

)
Pada bab sebelumnya telah dijelaskan mengenai Kelas dan objek sebagai fundamental OOP, bab ini akan menguraikan sifat OOP yang sangat berperan pada fitur reusable pada desain kelas diagram berbasis Object(OO), yaitu inheritance. Ide dasar dari sifat inheritance pada OOP adalah membuat kelas baru yang dibangun dari kelas ± kelas yang sudah ada. Artinya kelas baru tersebut mewarisi semua field dan behavior dari kelas lain. Sehingga bisa dikatakan kelas baru tersebut juga berjenis kelas yang diwarisinya.

Hirarki Class, Superclass, dan Subclass.
Salah satu relasi antar kelas dalam desain diagram yang sering terjadi adalah inheritance, dimana suatu kelas mewarisi kelas lain. Hali ini dapat terjadi sampai beberapa kelas hingga membentuk Hirarki kelas secara inheritance(Hirarki pewarisan kelas) Semakin Generic dan Abstract Superclass

Pegawai

Manager

Sekretaris

Programmer

Eksekutif Manager Semakin Spesifik Subclass

Istilah Pada hirarki diatas :  Superclass : Kelas yang mewariskan data dan methodnya kepada kelas lain. Kelas ini disebut juga sebagai ParentClass  Subclass : Kelas yang mewarisi data dan method dari Superclass

Namun pada kasus ± kasus tertentu kita membutuhkan data yang hanya bisa diakses oleh kelas yang memiliki hubungan turunan (se-package ataupun lain package) atau kelas lain yang se-package.pada situasi ini kita dapat menggunakan tingkat akses protected sehingga data dan method tersebut bisa diakses oleh kelas yang memiliki hubungan turunan (se-package ataupun lain package) atau kelas lain yang se-package. Eksekutif Manager ADALAH Manager dan juga ADALAH pegawai Sifat Inheritance pada java y Subclass mewarisi data dan method dari Superclassnya (untuk modifier yang visible : public dan protected) y Subclass dapat menjalankan method dari Superclass (untuk modifier yang visible : public dan protected) tetapi tidak berlaku sebaliknya y Methode Superclass implementasinya dapat diOverride oleh Subclassnya (kecuali untuk method yang final dan private) y Penggunaan kata kunci ³super´ di dalam Subclass untuk mengakses anggota Superclass (data maupun methode) dan juga bisa untuk memanggil konstruktor Superclass y y Semua kelas dapat diturunkan kecuali untuk kelas yang final Java tidak mendukung Multiple Inheritance Cara membuat kelas turunan (Subclass) [access modifier] Class [namaKelasAnak] extends [namaKelasInduk] { } Tingkat Akses Protected Pada bab sebelumnya kita telah mengenal akses private dimana method ± method dan data yang diberikan akses private dalam suatu kelas hanya bisa diakses oleh kelas itu sendiri. .Sifat dari hirarki pewarisan pada kelas diagram tersebut semakin ke atas semakin generic dan abstract (digunakan pada pemrograman generic).Sekretaris ADALAH Pegawai.Lingkungan diluar kelas tersebut bahkan turunannya pun tidak dapat mengakses method dan data private tersebut. Relasi pada kelas diagram tersebut merupakan jenis relasi ³ADALAH ´ maka bisa dikatakan Programmer ADALAH Pegawai.

Penggunaan override yaitu jika kita ingin mendefinisikan lain suatu method di dalam kelas induk. } } .println(³method B´).out.Overriding Method Pada saat kita mendefinisikan suatu method di dalam kelas turunan (subclass) yang nama dan daftar parameternya sama persis dengan yang terdapat pada kelas induk (superclass )maka dikatakan kita telah melakukan overriding method. Public class A { Public void getDeskripsi() { System. } } Public class B extends A { @override Public void getDeskripsi() { System.out. Dengan melakukan overriding method maka method yang akan dieksekusi oleh objek kelas turunan adalah method yang berada pada kelas turunan tersebut bukan method yang berada pada kelas induk.println(³method A´).

[nama method kelas induk]([argumen]) Pemanggilan konstruktor kelas induk : super([argumen]) Abstract Class Pada hirarki kelas inheritance pegawai telah kita ketahui bahwa semakin keatas tingkatanya maka sifatnya akan semakin abstract atau bisa dikatakan bersifat umum.begitu juga programmer. Begitu juga dengan Programmer dan sekretaris. Maka bisa dikatakan perluasan dari kelas pegawai adalah kelas person. baru akan diimplementasi oleh masing .data dari kelas ± kelas tersebut yang bersifat umum seperti data nama. Maka kelas person dapat dibuat abstract. maka dengan perluasan hingga abstract terdapat data .masing kelas turunannya.Kata kunci ³ super ´ Pada inheritance kata kunci ³super´ digunakan untuk memanggil konstruktor kelas induk dan juga bisa digunakan untuk mengakses method ± method dan data pada kelas induk yang visible (akses public atau protected). Membuat abstract class : [access modifier] abstract class [nama kelas] Membuat method abstract [access modifier] [tipe method] [nama method] ( [parameter] ) . Nama dimiliki oleh person maka pegawai pun mempunyai nama. dimana manager adalah pegawai dan juga adalah person. Pemanggilan method kelas induk : super.manager dan sekretaris. Kelas abstract dapat mempunyai method yang abstract pula yaitu method yang didalamnya tidak ada implementasi sama sekali.Perlu diperhatikan Method abstract hanya ada pada kelas abstract dan kelas abstract tidak dapat di instansiasi.

public abstract class Person { // membuat kelas abstract private String nama. } } .nama = nama. } } // method non abstract public class Mahasiswa extends Person { public Mahasiswa(String nama) { super. public String getNama() { return nama. } // method non abstract public void setNama(String nama) { this. } @Override // override methode abstract public String getDeskripsi() { return super. // method abstract tanpa implementasi public abstract String getDeskripsi().setNama(nama).getNama()+"adalah mahasiswa".

import java. this. } public Employee(String name. day). } public Date getHireDay() { return hireDay. month .*.util. this.int month. } } public double getSalary() { return salary.name = name. private double salary. int year. GregorianCalendar calendar = new GregorianCalendar(year.Percobaan 1 : Inheritance Kelas Employee 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 public void raiseSalary(double byPercent) { double raise = salary * byPercent / 100.getTime().int day) { this.1. salary += raise. public class Employee { private String name. } public String getName() { return name. . double salary. private Date hireDay.salary = salary.hireDay = calendar.

12. private double bonus. int year.getName()+". 15). month. 50000.out.println("nama staff = " +staff. boss. 1987.getSalary()). double salary. public static void main(String[] args) { public class ManagerTest { .Salary = " +staff.out.Salary = " +boss. int month. } System.getSalary(). 10. return baseSalary+bonus. Manager boss = new Manager("Steven Seagel". bonus = 0.getSalary()). Employee staff = new Employee("Donni Chen".bonus = bonus. } public Manager(String name. public class Manager extends Employee { } Kelas ManagerTest 1 2 3 4 5 6 7 8 9 10 11 12 13 14 } System. day).Kelas Manager 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 } public double getSalary() { double baseSalary = super. salary.getName()+".println("nama Boss = " +boss. 80000. 1989. year. int day) { super(name.setBonus(5000). 1). } public void setBonus(double bonus) { this.

Buatlah method baru bernama getInfo pada kelas manager dengan tipe kembalian String yang fungsinya untuk memberikan info nama dan hireDay. Jelaskan maksud dari baris ke 6 kelas Manager? 6. manakah yang merupakan kelas induk. gunakan key ³super´ untuk pemanggilan method kelas induk. Tambah kode pada kelas ManagerTest untuk menampilkan hasil keluaran method pada soal no 6. Jelaskan maksud dari baris ke 1 kelas Manager? 5. 8. Private. Jelaskan maksud dari baris ke 1 kelas Employee? 3. Pada ketiga kelas yang telah dibuat. apa yang terjadi b. apa yang terjadi Kesimpulan Percobaan: . Pada ketiga kelas yang telah dibuat method manakah yang teroverride dan milik kelas apa method tersebut? Dan method manakah yang mengoverride dan milik kelas apa? 10. Jelaskan maksud dari baris ke 15 kelas Manager? 7. Protected. Ubah access modifier method pada kelas Employee menjadi : a. Jelaskan maksud dari baris ke 7-12 kelas Employee? 4.Pertanyaan : 1. melalui objek yang telah ada di kelas ManagerTest 9. kelas anak dan kelas utama (main class) ? Apa keluaran dari kelas utama ? 2.

Percobaan 2 : Abstract Class Kelas abstract Person 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 } public abstract String getDescription(). public Students(String name.name = name. } public Person(String name) { this. private String name. } private String college. college = c. public class Students extends Person { . public abstract class Person { Kelas Student 1 2 3 4 5 6 7 8 9 10 11 } } public String getDescription() { return "a student study in "+college. } public String getName() { return name.String c) { super(name).

"Informatika"). System. Buatlah method abstract bernama getNim pada kelas student. Tambahkan code di bawah ini pada kelas AbstractTes baris ke 7 .getName( ). Jelaskan maksud baris ke 4 -7 pada kelas Student 3.out. Jelaskan hubungan baris ke 9 ± 11 pada kelas Student dengan baris 13 pada kelas person 4. Jalankan main program anda. public class AbstractTes { Pertanyaan 1.apakah hasilnya ? Person andi = new Person(³Andi Virmansyah ³) . Jelaskan maksud baris ke 1 dan ke 13 pada kelas Person 2.apa yang terjadi? Kesimpulan Percobaan : . Andi. Apa hasil keluaran dari kelas utama 5.getDescription()).Kelas AbstractTes 1 2 3 4 5 6 7 8 9 } } public static void main (String[] args) { Students mahasiswa = new Students("Budi". 6.println(mahasiswa.

Sign up to vote on this title
UsefulNot useful