Ana içeriğe geç
Modül 6 · Ders 1 ders 2Kurstaki 13/18~12 min
Modül dersleri (1/2)

C++'da Kalıtım

Kalıtım Nesneye Dayalı Programlamanın (OOP) temel direklerinden biridir. Yeni bir sınıfın (türetilmiş veya alt sınıf olarak adlandırılır), mevcut bir sınıftan (temel veya ana sınıf olarak adlandırılır) üyeleri (öznitelikler ve yöntemler) devralmasına izin vererek kodun yeniden kullanımını teşvik eder.

Temel Söz Dizimi

C++'da kalıtım, türetilmiş sınıf adından sonra : operatörü, ardından bir erişim belirtici (genellikle public) ve temel sınıf adı kullanılarak belirtilir.

C++
class Shape {
public:
    void setColor(std::string c) {
        color = c;
    }
protected:
    std::string color; // Accessible by derived classes
};

// Rectangle inherits publicly from Shape
class Rectangle : public Shape {
public:
    double getArea() {
        return width * height;
    }
private:
    double width {0.0};
    double height {0.0};
};

Erişim Belirleyicisi: protected

public ve private ile birlikte devralma, protected belirticisini sunar:

  • Temel sınıfın private üyelerine türetilmiş sınıftan doğrudan erişilemez.
  • Temel sınıfın protected üyelerine dışarıdan erişilemez, ancak türetilmiş sınıfların içinden doğrudan erişilebilir.

Temel Sınıf Başlatma

Yapıcılar otomatik olarak miras alınmaz. Türetilmiş bir sınıf başlatılırken ilk önce temel sınıf yapıcısı çağrılır. Temel sınıf argüman gerektiriyorsa, onu türetilmiş kurucunun üye başlatıcı listesinde açıkça çağırmalıyız.

C++
class Parent {
public:
    Parent(int x) {
        std::cout << "Parent: " << x << std::endl;
    }
};

class Child : public Parent {
public:
    // Explicit call to Parent constructor
    Child(int x, int y) : Parent(x) {
        std::cout << "Child: " << y << std::endl;
    }
};

Kendin dene

Egzersiz#cpp.m6.l1.e1
Denemeler: 0Yükleniyor…

Animal sınıfından herkese açık olarak miras alan bir Dog sınıfı oluşturun. Dog sınıfı, std::cout kullanarak 'Oynatılıyor'u yazdıran genel bir play() yöntemini içermelidir.

Düzenleyici yükleniyor…
İpucu göster

Temel sınıfı genişletmek için `:` sözdizimini ve ardından `public Animal'ı kullanın, ardından `play()` yöntemini yazın.

3 denemeden sonra çözüm mevcut

Egzersiz#cpp.m6.l1.e2
Denemeler: 0Yükleniyor…

Araçtan miras alarak Araba sınıfını tamamlayın. Car için std::string b'yi kabul eden ve bunu üye başlatıcı listesi aracılığıyla Araç yapıcısına ileten bir yapıcı yazın.

Düzenleyici yükleniyor…
İpucu göster

'Araba' yapıcısında, markanın başlatılmasını temel sınıfa devretmek için parametre parantezlerinin hemen ardından ': Araç(b)' sözdizimini kullanın.

3 denemeden sonra çözüm mevcut