Bilmek istediğin her şeye ulaş

C Sharp'ta birden fazla sınıftan kalıtım alabilir miyiz?

public class CDAndDVDComboPlayer : ICDPlayer, IDVDPlayer
{
//Your codes
}

Birden fazla sınıftan kalıtım yapamazsınız, fakat birden fazla interfaceden kalıtım yapabilirsiniz.
  • Paylaş
CPP olsaydı hem kuş kedi hemde kalıtımla ahtapot tanımlayabilir miydik?
  • Paylaş
Türetilemez, ancak hilesi vardır:
public class A {}
public class B : A {}
public class C : B {}

dersen kalıtımı sağlarsın, tabi yapını da bozabilir.

  • Paylaş
Her sınıf(class) sadece 1(bir) sınıftan kalıtım(inherit) alabilir. Her sınıf istediği kadar arayüz(interface)'den kalıtım alabilir.
  • Paylaş
Object Oriented Programming yapısına göre bir class birden fazla class'tan kalıtımsal olarak oluşturulamaz. Bunu gerçek hayattaki nesneler gibi düşününce, bence gayet mantıklı olduğu aşikar. Çünkü, eğer birden fazla kalıtımsallık olabilseydi, nesneler birbirine karışırdı.

Düşünsene, bir kedi var ve tanımı şu şekilde:
  1. Dört ayaklı
  2. Tüylü
  3. Kuyruklu

Bir de kuş düşünelim:

  1. İki ayağı var
  2. Tüylü
  3. Kanatları var

Şimdi senin sorduğun soru şu: "Hem kedinin hem de kuşun özelliklerini taşıyan bir nesne oluşturabilir miyim?"

Oluşturabilir misin ? :)

  • Paylaş
5

Abdulkerim Keleş, o zaman c++ neden oluşturuyor ? :)

Hakan Köse, C++ taki durumu bilemiyorum ancak bunun orada da gerçekleştirilebildiğini pek sanmıyorum. Ancak C#'ta sadece 1 class'tan kalıtımsallık alınabililmekle beraber, interface'ler ile bu desteklenebiliyor. Belki buna benzer bir yardımcı yapı vardır orada da ama tabii C++ konusunda bir tecrübem yok malesef.

Hakan Köse, Burada: stackoverflow.com/questions/178333/multiple-inheritance-in-c-sharp

.NET desteklemiyor diyor, kodlarda işler çok karışıyormuş.

Huseyin Uslu, Pekala birden fazla sınıftan kalıtım yapmanıza izin veren diller vardır. C#'ın bunu sadece interfaceler yoluyla izin vermesi, hiç olmaması anlamına gelmez. Ayrıca örnek kendi içinde de doğru değil.

Hakan Köse, Evet izin veren diller var ancak C# için bu geçerli değil (soruda özellikle C# sorulmuş). Örnekle ilgili olarak pek bir yorum getiremeyeceğim :)