SORU
23 Ocak 2013, ÇARŞAMBA


Nasıl C mi'#; In çoklu kalıtım eksikliği arayüzleri için ihtiyaç neden?

The C# Programming Language Krzysztof Cwalina Birleşik Devletleri içinde ek açıklama:

biz açıkça çoklu kalıtım desteği eklemek için karar verdi [...] çoklu kalıtım eksikliği bizi kavramını eklemek zorunda bu sırayla sorunları sorumlu olan arayüzleri, çerçeve evrim, derin kalıtım hiyerarşileri, ve birçok diğer sorunlar.

Arabirimler programlama dilleri OO çekirdek bir kavram vardır. Anlamını anlamıyorum "bize arabirimleri kavramını eklemek zorunda"

Krzysztof bazı tasarım kararları ile başka yerde birden kullanılacak arabirimler kullanımına ilişkin yapmak zorunda olduğu anlamına mı geliyor? Veya, interfacedemek o'C tanıttı s# çoklu kalıtım eksikliği yüzünden mi? Bir örnek verebilir misiniz?

CEVAP
23 Ocak 2013, ÇARŞAMBA


Bir arabirim sadece veri üyesi var ve sadece public abstract yöntemleri tanımlayan temel bir sınıftır. Örneğin, bu C arayüz :

class IFrobbable {
    public:
    virtual void Frob() = 0;
}

Bu nedenle ne Mİ yapabilirsiniz bir dil özelliği olarak kullanılabilir "" sadece onları türetmek tarafından arabirimleri (tekrar, C): uygular

class Widget : public IFrobbable, public IBrappable {
    // ...
}

Çoklu kalıtımgenel durumdamutlaka sizin özel bir tanımı için tek bir cevap, hatta iyi bir tane yok birçok soru ve problemlere yol açar "" (dreaded diamond isteyen?). iyi Birden çok arabirimi uygulama tam olarak "" bir arayüz tam anlamıyla bir sınıf devralmasını çok kısıtlı özel bir durumdur. miras kavramı çünkü bu sorunların çoğu sidesteps

Ve burada "zorla bizi ekleyin konsept arayüzleri" geliyor: bunu yapamazsınız kadar OO tasarım zaman kısıtlı tek miras sadece, Örneğin orada çok ciddi sorunlarla olamamak yeniden kodu zaman kodu yeniden aslında sıklıkla tartışmalar için OO. Daha fazla bir şey yapmak zorunda, ve bir sonraki adım, birden çok devralma ekliyor ama sadece sınıflar için bir arayüz kısıtlamaları karşılamak.

Yani, ben şöyle Krzysztof alıntı yorumlar

Genel durumda çoklu kalıtım bu çok meşakkatli bir sorundur gerçek hayat verilen tatmin edici bir şekilde çözmek mümkün değil gelişimini kısıtlar .NET. Ancak, arayüzü devralma hem de çok. mücadele etmek için daha basit ve koy yaptık OOP, yüksek öneme . Ama arayüzleri de sorunları kendi seti ile geliyor tabii, KORUYUCU yapısal özellikle ilgili.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • LIVESTRONG.COM

    LIVESTRONG.C

    5 EKİM 2005
  • Ludique

    Ludique

    21 NİSAN 2009
  • Blu animations and other videos

    Blu animatio

    15 HAZİRAN 2007