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.
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.
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
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.
İ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
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.
İ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