şükela:  tümü | bugün
  • (bkz: ambiguity)
  • çokça kullandığım ve neden kötülendiğini anlayamadığım nesne yönelimli programlamanın olmazsa olmazı*.
  • çokca kötülenmesinin sebebi şudur. örneğin serçezarus diye bir nesnemiz olsun ve bunu hem kuş hem de dinazor sınıflarından türetelim. her iki sınıfta da kuyruk adlı bir member olursa serçezarus->kuyruk dediğimizde dinazorun mu yoksa kuşun mu kuyruğu geleceği konusunda çelişkiler olacaktır. bundan dolayı birçok platformda desteklenmeyen bir yapı olmuştur.
    symbian'da da m ile başlayan interface'ler dışında desteklenmez.
  • c++'ın ki$iyi ters kö$eye yatırması gayet mümkün bir özelliği.
    (bkz: interface)
  • c#'da interface'ler implement edildiği için desteklenmeyen tekniktir. : işareti kafanızı karıştırmasın, c# compiler, : operatörünü görünce, aldığı parametrenin interface olması halinde implement olarak yorumlar, class olması halinde inherit olarak yorumlar. bu konuda vbscript.net gramerine dikkat ediniz.
  • python'da da desteklenen özellik.
  • avantajları olmasının yanında yukarıdaki kuş dinazor örneğinde olduğu gibi diamond problem ' a sebep olabilmektedir.

    konuyla ilgili birşeyler ufak bir makale yazmıştım ;

    http://www.denizirgin.com/…im-ve-tekli-kalitim.aspx
  • c++'da gparent class'indan inherit edilmis father ve mother seklinde iki class'imiz olsun ve child class'imiz da bu ikisinden inherit edilsin.

    bu durumda child class objesinin father ve mother'dan gelen iki adet gparent subobjesi olacaktir, sorun ise su;

    gparent objesinin icinde data seklinde bir int tutuldugunu dusunursek, child::data dedigimizde compiler aglar, (bkz: ambigous) cunku father'dan mi yoksa mother'dan mi gelen gparent::data'nin kullanilacagini bilemez.

    bunun cozumu olarak da inheritance yaparken father ve mother'in asagidaki sekilde tanimlanmasidir (bkz: virtual)

    class father : virtual public gparent
    class mother : virtual public gparent
    class child : public mother, public father

    bu sebeple gerekli olmadikca kullanilmamasi gerekir multiple inheritance.

    (bkz: use with caution)
  • c++ ve phython harici populer programlama dillerinde desteklenmeyen oluşum. ne yaptığınızdan gerçekten emin olmadığınız sürece kullanmayınız. aynı zamanda diamond problema yakalanma ihtimaliniz gayet yüksektir.