Diamond Problem pada C#

Pada kali ini saya akan membahas tentang salah satu istilah dalam dunia pemrograman, yaitu "Diamond Problem".




Dalam bahasa C#, multiple inheritance (salah satu jenis pewarisan) tidak dapat digunakan kecuali menggunakan interface. Hal ini dikarenakan akan terjadinya "Diamond Problem". Apat itu Diamond Problem? Diamond Problem adalah salah satu istilah dalam dunia pemrograman yang menunjukan kebingungan compiler saat me-running class yang menggunakan  multiple inheritance dan hierarchical inheritance. 

Contohnya, saya membuat 4 class dengan hubungan pewarisan dan main programnya. 

class BaseClass
    {
        public void Display()
        {
            Console.WriteLine("Display From Base");
        }
    }

class ClassA : BaseClass
    {
    }

class ClassB : BaseClass
    {
    }

class ClassC : ClassA, ClassB
    {
    }

class Program
    {
        static void Main(string[] args)
        {
            ClassC c = new ClassC();
            c.Display();
        }
    }


Diagram Class :





Base class adalah class base dari ClassA dan ClassB.
ClassA dan ClassB adalah class base dari ClassC. Method Display() dari BaseClass diturunkan kepada ClassA dan ClassB.
Lalu method Display() diturunkan lagi dari ClassA ke ClassC, dan dari ClassB ke ClassC.

Pada saat pemanggilan method Display oleh ClassC di main program, Compiler akan bingung method Display() dari mana yang akan dipanggil. Apakah method dari ClassA ke ClassC, atau method dari ClassB ke ClassC. Itulah yang disebut Diamond Problem.

Jika code class di atas di tulis di visual studio, maka akan terdapat pesan error pada ClassC.


Begitulah sedikit tentang Diamond Problem pada C# kali ini. Semoga dapat bermanfaat..

Komentar