Multiple Inheritance Java dan Fungsinya
Perhatikan contoh program Java berikut ini, hasil yang ditampilkan dari contoh program tersebut adalah error.
/* 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();}
}
- Permasalahan Diamond.
// 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();}
}
- Simplicity - Multiple inheritance tidak didukung oleh Java dengan menggunakan class, dikarenakan multiple inheritance sangat komplek. Hal tersebut akan menciptakan masalah selama operasi seperti casting, constructor 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.
// 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();}
}
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.
// 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();}
}
- 2 Contoh Cara Mengakses Anggota Grandparent pada Java Menggunakan Super [klik]
- 3 Contoh Program Method Private Overriding pada Java [klik]
- 2 Contoh Program Akses Terbatas Menuju Method Class Derived pada Java [klik]
- Parent dan Child Class Memiliki Anggota Data Sama pada Java [klik]
- 3 Kondisi Object Serialisasi Terhadap Inheritance pada Java [klik]
- 2 Kondisi Utama Referensi Object Subclass dan Subclass vs Referensi Superclass Java [klik]
- 3 Contoh Dimana Overloading dapat Bekerja dengan Inheritance pada Java [klik]
Apa yang dimaksud dengan multiple inheritance pada Java?
BalasHapusMultiple 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.
HapusMultiple 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.
HapusBagaimana cara menerapkan multiple iheritance pada Java?
BalasHapusSatu-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