Lompat ke konten Lompat ke sidebar Lompat ke footer

Multiple Inheritance Java dan Fungsinya

Multiple inheritance adalah fitur dari konsep berorientasi object, dimana sebuah class dapat mewariskan propertinya kepada lebih dari satu parent class. Permasalahan yang terjadi ketika terdapat method dengan signature sama dalam kedua super class dan subclass tersebut. Ketika method dipanggil maka kompilator tidak dapat menentukan method class mana yang akan dipanggil, bahkan ketika memanggil method class mana yang harus diproritaskan terlebih dahulu.


Sebelum lebih lanjut mempelajari materi tentang Multiple Inheritance Java dan Fungsinya, terlebih dahulu pelajari materi tentang: Cara Inisialisasi Block Instance Java dan Fungsinya, Static dan Dynamic Binding Java dan Fungsinya, dan Java Bukan Pemrograman Berorientasi Objek Murni dan Alasannya.

Multiple inheritance adalah konsep dalam pemrograman di mana sebuah kelas dapat mewarisi sifat-sifat (atau perilaku) dari lebih dari satu kelas induk. Java, salah satu bahasa pemrograman yang populer dan kuat, awalnya dirancang dengan tujuan untuk mendukung multiple inheritance. Namun, saat implementasinya, Java menghadapi beberapa tantangan yang membatasi penggunaan langsung multiple inheritance. Artikel ini akan mengeksplorasi konsep multiple inheritance dalam konteks Java, tantangan yang dihadapi, serta cara-cara untuk mencapai tujuan yang sama dengan pendekatan yang berbeda.

Konsep Multiple Inheritance dalam Java

Dalam multiple inheritance, sebuah kelas dapat mewarisi sifat-sifat dari lebih dari satu kelas induk. Misalnya, pengembang memiliki kelas A dan kelas B, dan ingin membuat kelas C yang mewarisi sifat-sifat dari kedua kelas A dan B. Dalam beberapa bahasa pemrograman seperti C++, penggunaan multiple inheritance dapat dilakukan secara langsung dengan menyatakan kelas C mewarisi kelas A dan kelas B.

Namun, dalam Java, penggunaan multiple inheritance secara langsung tidak diizinkan karena beberapa alasan, termasuk kompleksitas yang terkait dengan konflik nama metode, ambiguitas, dan kerentanan terhadap masalah seperti "diamond problem".

Fungsinya dalam Pengembangan Perangkat Lunak

Meskipun Java tidak mendukung multiple inheritance langsung, konsep ini tetap penting dalam pengembangan perangkat lunak. Beberapa fungsinya antara lain:
  • Menghindari Redundansi Kode: Dengan multiple inheritance, pengembang dapat menghindari redundansi kode dengan mengelompokkan dan menggabungkan sifat-sifat yang sama dari beberapa kelas induk ke dalam satu kelas turunan.
  • Meningkatkan Keterbacaan dan Pemeliharaan Kode: Dengan mewarisi sifat-sifat dari beberapa kelas induk, pengembang dapat meningkatkan keterbacaan dan pemeliharaan kode. Ini karena pengembang dapat menggunakan hierarki kelas untuk menunjukkan hubungan antara kelas-kelas tersebut.
  • Menggunakan Fitur-fitur dari Berbagai Kelas: Dalam beberapa kasus, pengembang mungkin memerlukan fitur-fitur dari lebih dari satu kelas untuk mencapai fungsi tertentu. Dengan multiple inheritance, pengembang dapat menggabungkan fitur-fitur tersebut ke dalam satu kelas tanpa perlu menulis ulang kode atau menggunakan teknik pewarisan ganda.

Java Tidak Mendukung Multiple Inheritance

Perhatikan contoh program Java berikut ini, hasil yang ditampilkan dari contoh program tersebut adalah error.

Pengganti Multiple Inheritance dalam Java

Meskipun Java tidak mendukung multiple inheritance secara langsung, bahasa ini menyediakan mekanisme alternatif untuk mencapai tujuan yang sama, yaitu melalui antarmuka (interface) dan pewarisan tunggal (single inheritance).
  • Antarmuka (Interface): Dalam Java, sebuah kelas dapat mengimplementasikan satu atau lebih antarmuka. Antarmuka memungkinkan kelas untuk menyediakan implementasi untuk metode-metode yang didefinisikan dalam antarmuka tersebut. Dengan menggunakan antarmuka, pengembang dapat mencapai pola perilaku yang mirip dengan multiple inheritance. Meskipun tidak memungkinkan kelas untuk mewarisi implementasi dari lebih dari satu kelas, antarmuka memungkinkan kelas untuk mendefinisikan kontrak perilaku yang dapat diadopsi oleh kelas-kelas lain.
  • Pewarisan Tunggal (Single Inheritance): Java mendukung pewarisan tunggal, di mana sebuah kelas hanya dapat memiliki satu kelas induk langsung. Namun, kelas tersebut masih dapat mewarisi perilaku dari kelas induk secara tidak langsung melalui rantai pewarisan. Dengan memanfaatkan hubungan hierarki kelas, pengembang dapat mencapai komposisi dan penyebaran fitur-fitur yang dibutuhkan dalam aplikasi.

Baca Juga:
Contoh:

/* parent class pertama */ 

class Parent1 

void fun() 

{System.out.println("Parent1");} 

 

/* parent class kedua */ 

class Parent2 

void fun() 

{System.out.println("Parent2");} 

 

// Error : Test diwariskan

// dari multiple class.

class Test extends Parent1, Parent2 

public static void main(String args[]) 

{Test t = new Test(); 

t.fun();} 

}

Output:
Compiler Error

Dari kode program sebelumnya, dapat dilihat bahwa pada saat pemanggilan method fun() menggunakan Test object, maka akan menyebabkan komplikasi program akan memanggil  method Parent1 fun() atau Parent2 fun().
  • Permasalahan Diamond.

Contoh:

// Sebuah Grand parent class

// dalam diamond.

class GrandParent 

void fun() 

{System.out.println("Grandparent");} 

 

/* class parent pertama */

class Parent1 extends GrandParent 

void fun() 

{System.out.println("Parent1");} 

 

/* class parent kedua */ 

class Parent2 extends GrandParent 

void fun() 

{System.out.println("Parent2");} 

 

// Error : Test diwariskan

// dari multiple class.

class Test extends Parent1, Parent2 

public static void main(String args[]) 

{Test t = new Test(); 

t.fun();} 

}


Dari kode program sebelumnya, dapat dilihat bahwa ketika pemanggilan method fun() menggunakan object Test akan menyebabkan komplikasi memanggil method Parent1 fun() atau Child fun(). Karena itu, untuk menghindari kompilasi, Java tidak mendukung multiple inheritance dari class.
  • Simplicity - Multiple inheritance tidak didukung oleh Java dengan menggunakan class, dikarenakan multiple inheritance sangat komplek. Hal tersebut akan menciptakan masalah selama operasi seperti castingconstructor berantai, dan lain sebagainya, serta diatas semua alasan tersebut adalah sangat sedikit skenario yang membutuhkan multiple inheritance, sehingga lebih baik untuk menghilangkannya untuk menjaga proses pembuatan program tetap sederhana dan mudah.

Cara Mengatasi Permasalahan untuk Method Default dan Interface

Java versi 8 mendukung penggunaan method default, dimana interface dapat menyediakan implementasi default dari method, san sebuah class dapat mengimplementasikan dua atau lebih interface. Dalam kasus penerapan interface yang mengandung method default dengan signature method sama, implementasi class harus tertulis secara spesifik dimana method default digunakan atau harus overriding method default.

Contoh:

// Sebuah program Java

// sederhana mendemonstrasikan

// multiple inheritance

// melalui method default.

interface PI1 

/* default method */

default void show() 

{System.out.println("Default"

+" PI1");} 

 

interface PI2 

/* default method */

default void show() 

{System.out.println("Default"

+" PI2");} 

 

/* Implementasi class code */

class TestClass implements PI1, PI2 

 

// Overriding default yang

// menampilkan method.

public void show() 

{// menggunakan keyword super

// untuk memanggil method show

// dari PI1 interface.

PI1.super.show(); 

 

// menggunakna keyword super

// untuk memanggil method show

// dari PI2 interface.

PI2.super.show();} 

 

public static void main(String args[]

{TestClass d = new TestClass(); 

d.show();} 

}

Output:
Default PI1
Default PI2

Jika implementasi dihilangkan dari method default yang berasal dari "TestClass", maka kompilator akan error, dan jika terdapat 'diamond' sepanjang interface, maka tidak ada masalah jika tidak ada middle interface yang menyediakan implementasi interface root. Namun jika ternyata menyediakan implementasi, maka implementasi dapat melakukan akses seperti contoh sebelumnya menggunakan keyword super.

Contoh:

// Sebuah program Java

// sederhana mendemonstrasikan

// bagaimana permasalah

// diamond diatasi dalam kasus

// method default.

interface GPI 

/* default method */

default void show() 

{System.out.println("Default GPI");} 

 

interface PI1 extends GPI { } 

 

interface PI2 extends GPI { } 

 

/* Implementasi class code */

class TestClass implements PI1, PI2 

public static void main(String args[]

{TestClass d = new TestClass(); 

d.show();} 

}

Output:
Default GPI

Kesimpulan

Meskipun Java tidak mendukung multiple inheritance secara langsung, konsep ini tetap penting dalam pengembangan perangkat lunak. Dengan menggunakan mekanisme seperti antarmuka dan pewarisan tunggal, Java memungkinkan pengembang untuk mencapai tujuan yang sama dengan multiple inheritance, sambil menghindari kompleksitas dan ambiguitas yang terkait dengan pendekatan langsung. Dengan pemahaman yang baik tentang konsep ini, pengembang Java dapat merancang dan mengimplementasikan struktur kelas yang efektif dan mudah dipelihara.

Referensi Tambahan:

Artikel ini didedikasikan kepada: Ana Tasya Putri Rahma, Aprillia Puteri Pradana, Arum Galuh Saputri, Aulia El Vaneza, dan Azzam Fattahulhaq Santoso.

5 komentar untuk "Multiple Inheritance Java dan Fungsinya"

  1. Apa yang dimaksud dengan multiple inheritance pada Java?

    BalasHapus
    Balasan
    1. Multiple inheritance adalah fitur konsep berorientasi object, dimana class dapat mewarisi properti lebih dari satu parent class. Ketika memanggil method, kompilator tidak dapat menentukan method class mana yang akan dipanggil dan bahkan saat memanggil mehtod class mana yang mendapatkan prioritas lebih dan kurang.

      Hapus
    2. Multiple inheritance adalah fitur dari bahasa pemrograman komputer berorientasi object dimana object atau class dapat mewarisi karakteristik dan fitur lebih dari satu object parent atau class induk.

      Hapus
  2. Bagaimana cara menerapkan multiple iheritance pada Java?

    BalasHapus
    Balasan
    1. Satu-satunya cara untuk mengimplementasikan multiple iheritance pada Java adalah dengan mengimplementasikan banyak interface dalam sebuah class. Pada Java, satu class dapat mengimplementasikan dua atau lebih interface, dimana hal ini tidak akan menyebabkan ambiguitas karena semua method yang dideklarasikan dalam interface diimplementasikan pada class.

      Hapus

Hubungi admin melalui Wa : +62-896-2414-6106

Respon komentar 7 x 24 jam, mohon bersabar jika komentar tidak langsung dipublikasi atau mendapatkan balasan secara langsung.

Bantu admin meningkatkan kualitas blog dengan melaporkan berbagai permasalahan seperti typo, link bermasalah, dan lain sebagainya melalui kolom komentar.

- Ikatlah Ilmu dengan Memostingkannya -
- Big things start from small things -