Multiple Inheritance pada Bahasa C#

Reading Time: 2 minutes
Ilustrasi Multiple Inheritance
Multiple Inheritance/Multiple Implement Interface

C# Tidak Mendukung Multiple Inheritance

C# tidak mendukung mutiple inheritance karena akan menimbulkan ambiguitas. Contoh kasus ambiguitas yang bisa timbul dari multiple inheritance misalnya, ada class A, B dan C. Class A dan B memiliki method yang nama dan parameternya persis sama, misal namanya MethodSample(). Class C kemudian mewarisi class A dan B, maka di dalam class C akan ada 2 MethodSample(string args). Ketika MethodSample() dipanggil melalui class C, kompiler akan bingung apakah akan memanggil method yang diwarisi dari A atau dari B. Karena alasan tersebut C# tidak mendukung multiple inheritance. Berikut adalah contoh implementasi multiple inheritance di C#(Anggap saja C# mendukung fitur tersebut).

Alternatif Multiple Inheritance Menggunakan Interface

C# memang tidak mendukung multiple inheritance tapi ada alternatif untuk melakukan itu di C#, yaitu menggunakan interface. Method-method di dalam interface semuanya abstrak, class turunannya yang harus mengimplementasikan method-method tersebut. Sebuah class yang mengimplementasikan interface akan mewarisi tipe(class dan interface bisa dianggap sebagai tipe). Class tersebut juga “dipaksa” untuk melakukan implementasi method sesuai yang didefinisikan di interface tersebut. Sebuah class bisa mengimplementasikan interface lebih dari satu. Berikut contoh alternatif implementasi multiple iheritance di C# menggunakan interface.

Pada contoh kode diatas, class ManusiaSuper melakukan implementasi dua interface, yaitu IManusia dan IAlien. Berikut adalah contoh kode untuk memanggil method-method yang ada di class ManusiaSuper.

Class program memiliki dua method, pertama CallManusia() dengan tipe argumen IManusia dan CallAlien() dengan tipe argumen IAlien. Di method Main(), method CallManusia() harus dipanggil dengan menyertakan parameter berupa object bertipe IManusia. Method CallAlien() harus dipanggil dengan menyertakan parameter berupa object bertipe IAlien. Perhatikan pada saat pemanggilan method CallManusia() dan CallAlien dengan parameter object bertipe ManusiaSuper. Dengan mengimplementasikan IManusia dan IAlien, object manusiaSuper bisa dikenali sebagai object Manusia maupun object Alien. Object yang mengimplementasikan interface bisa dikenali di seluruh bagian kode program yang memiliki pengidentifikasi berupa interface yang diimplementasikan class tersebut.

Contoh implementasi alternatif multiple inheritance di C# yang lainnya, bisa kalian lihat di tulisan saya yang membahas tentang Dependency Injection. Tulisan tersebut menjelaskan bagaimana teknik dependency injection dilakukan dengan menggunakan interface.

Terima kasih. Semoga bermanfaat.

Bagikan artikel

Tinggalkan Balasan

  1. Ping-balik: C# : Memahami Interface - Kehidupan Seorang Programmer{}