4 Inheritance (Pewarisan)

Embed Size (px)

Citation preview

  • 7/22/2019 4 Inheritance (Pewarisan)

    1/12

    Inheritance (Pewarisan)

    PEWARISAN (INHERITANCE)

    Salah satu fitur yang paling kuat dalam OOP adalahpenggunaan kode kembali (code reuse). Sekali sebuahprosedur dibuat, maka kita bisa menggunakannya berulangkali

    Dalam OOP, kemampuan yang dimiliki tidak hanya itu.Kita juga bisa mendefinisikan hubungan antar kelas yangtidak hanya dimanfaatkan untuk code reuse, tapi juga darisegi pendesainannya yang jauh lebih baik, yaitu dengancara mengelola kelas-kelas dan faktor kemiripan di antarakelas-kelas tersebut.

  • 7/22/2019 4 Inheritance (Pewarisan)

    2/12

    Fitur pewarisan (inheritance) mengijinkan sebuahkelas, yang disebut superclass, untuk menurunkanatribut-atribut dan method-methodnya kepada kelaslainnya yang disebut subclass (child)

    Terdapat beberapa karakteristik darisubclass:

    -subclass adalah bentuk khusus dari sebuah

    superclass

    -dalam sebuahsubclassterdapat atribut danmethod yang diturunkan darisuperclass

    - subclassbisa memiliki fitur tambahan yang

    berbeda dari fitur-fitur yang diturunkan dari

    superclass-nya

  • 7/22/2019 4 Inheritance (Pewarisan)

    3/12

    CONTOH PEWARISAN

    JENIS-JENIS PEWARISAN

    Single inheritance, yaitu hanya terdapat satusuperclass

    Multiple inheritance, yaitu terdapat lebih dari satusuperclass. Bahasa Java tidak mengakomodasimultiple inheritance

  • 7/22/2019 4 Inheritance (Pewarisan)

    4/12

    Pewarisan adalah kemampuan sebuah kelas untukmewariskan atribut-atribut dan methodnya-methodnya ke kelas lain, sehingga atribut danmethod tersebut dikenal oleh kelas yang menerima

    pewarisan tanpa harus menuliskannya. Pewarisanini merupakan implementasi dari hubungan antarkelas generalisasi-spesialisasi.

  • 7/22/2019 4 Inheritance (Pewarisan)

    5/12

    Kelas yang mewariskan disebut kelas induk, superclass, atau base class sedangkan kelas yangmenerima pewarisan disebut kelas anak, kelasturunan, atau subclass.

    Pewarisan dapat dilakukan jika :

    Ada beberapa atribut dan method yang sama yangdigunakan oleh beberapa kelas berbeda (reduksipenulisan kode)

    Ada satu atau beberapa kelas yang sudah pernahdibuat yang dibutuhkan oleh aplikasi (reusability)

    Ada perubahan kebutuhan fungsional atau featureaplikasi dimana sebagian atau seluruh perubahantersebut tercakup di satu atau beberapa kelas yangsudah ada (extend)

  • 7/22/2019 4 Inheritance (Pewarisan)

    6/12

    Pewarisan di Java

    Pewarisan di Java hanya mengenal pewarisantunggal, artinya sebuah kelas hanya mewarisi atributdan method dari satu kelas induk. Untukmenggunakan pewarisan di Java digunakan keywordextends.

    Contoh Pewarisan

  • 7/22/2019 4 Inheritance (Pewarisan)

    7/12

    //Employee.java

    public class Employee {

    public String name;

    public Date birthDate;

    public double salary;

    public String getDetails() {...}

    }

    //Manager.java

    public class Manager extends Employee {public String department;

    }

  • 7/22/2019 4 Inheritance (Pewarisan)

    8/12

    Dari kode di atas, terlihat bahwa atribut name,birthDate, dan salary serta methodgetDetails() diturunkan ke kelasManagersehingga kelasManager dapat menggunakan atribut

    dan method tersebut.

    Konstruktor dari kelas induk tidak dapat diturunkankepada kelas turunannya.

    Untuk menggunakan method dan konstruktor darikelas induk pada kelas anak digunakan keywordsuper

    //Employee.java

    public class Employee {

    private String name;

    private double gaji;

    public Employee (String s, double g) {

    name = s;gaji = g;

    }

    public double getgaji() {

    return gaji;

    }

    }

  • 7/22/2019 4 Inheritance (Pewarisan)

    9/12

    //Manager.java

    public class Manager extends Employee {

    private String alamat;

    private double tunjangan;

    private double bonus;

    public Manager(String nama, String s, double gaji){

    super(nama, gaji);

    alamat = s;

    }

    Public double getgaji() {

    return (super.getgaji()+tunjangan+bonus);

    }

    }

    Ketika kode dalam satu kelas (kelas A) memiliki akses

    ke kelas yang lain (kelas B), hal tersebut berarti kelas A

    dapat melakukan satu dari tiga hal berikut :

    Membuatinstancekelas B;

    Meng-extendskelas B (dengan kata lain, menjadisubclassdari kelas A);

    Mengakses atribut danmethodtertentu dalam kelas Btergantung dariaccess control atribut danmethodnya.

  • 7/22/2019 4 Inheritance (Pewarisan)

    10/12

    Access modifier yang dapat diterapkan pada kelasadalah akses default (friendly) dan public.

    Dalam deklarasinya, sebuah kelas denganaccessmodifier defaulttidak memilikimodifierdi depan namakelasnya. Kelas yang memiliki aksesdefaultberarti kelasini hanya dapat diakses oleh kelas yang berada di dalampackage yang sama. Contoh, jika kelas A dan B terletak didalam package yang berbeda, dan kelas A memiliki aksesdefault, maka kelas B tidak dapat membuatinstancedarikelas A atau bahkan tidak dapat mendeklarasikan

    variabel yang bertipe kelas A. Perhatikan contoh berikutini:

    Contoh

    package packageOne;

    class Animal { }

    package packageTwo;

    import packageOne.Animal;class Dog extends Animal { }

    SuperclassAnimal berada di dalam package yang berbeda dengansubclassnya, yaitu

    Dog. Pernyataan import di dalam kelas Dog berusaha mengimpor kelas Animal. Ketikaproses kompilasi dijalankan, kelas Animal dapat dikompilasi, tetapi tidak dengan kelasDog. Hal ini disebabkan karenasuperclassAnimal mempunyai akses default dan terletakdi dalam package yang berbeda. Kelas yang dideklarasikan public dapat diakses olehkelas yang berada di manapun, termasuk oleh kelas yang berada di package yangberbeda. Jika contoh kode di atas dimodifikasi dengan menjadikan kelas Animalmemiliki access modifier public, maka kedua kelas tersebut dapat dikompilasi.

  • 7/22/2019 4 Inheritance (Pewarisan)

    11/12

    Access modifier

    Tabel di bawah ini merupakan rangkuman

    aksesibilitas dari access modifierpada class member

    (atribut dan method).

    package1

    OK OK

    OKOK

    OK

    OKNO

    NO

    + b : int

    # c : int

    - d : int

    Class1

    a : int

    Class2 SubClass1

  • 7/22/2019 4 Inheritance (Pewarisan)

    12/12

    package3 package1 package2

    NO NO

    OK OK

    NOOK

    NONO

    Class2 SubClass1

    + b : int

    # c : int

    - d : int

    Class1

    a : int

    Latihan

    Buatlah kode Java untuk diagram UML berikut