Temel C++ 5. Gün: Kalıtım

Kalıtım

Bir önceki bölümde sınıflar ve nesneler ile ilgilendik. Kedi isimli bir sınıf tanımlayıp, o sınıftan Tekir isimli bir nesne oluşturduk.

Şimdi, düşünelim ki birden fazla hayvan cinsimiz var. Örneğin kedi ve köpek olmak üzere iki cinsimiz olsun. Eğer bu iki tür için iki farklı sınıf tanımlarsak gereksiz yere kod tekrarı yapmış oluruz çünkü bu iki türünde sahip oldukları ortak özellikler var. Dünkü örneğin üzerinden devam edelim;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
#include <iostream>
using namespace std;
// Hayvan isminde bir sınıf olusturduk.
class Hayvan{
private:
int agirlik;
string isim;
public:
void agirligiBelirle(int kg)
{
agirlik = kg;
}
void ismiBelirle(string ismi)
{
isim = ismi;
}
int agirligiGetir()
{
return agirlik;
}
string ismiGetir()
{
return isim;
}
Hayvan();
~Hayvan();
}; // noktali virgule dikkat etmeyi unutmayin.
Hayvan::Hayvan()
{
cout << "Bir hayvan nesnesi olusturuldu." << endl;
}
Hayvan::~Hayvan()
{
cout << this->isim << " nesnesi yok edildi." << endl;
}
// Hayvan sınıfından kedi ve kopek olmak uzere iki sinif turettik.
class Kedi : public Hayvan
{
private:
string ses = "miyav";
public:
string sesiGetir()
{
return ses;
}
Kedi();
~Kedi();
};
//Kedi sınıfı icin constructor ve deconstructor
Kedi::Kedi(){
cout << "Bir kedi nesnesi olusturuldu." << endl;
}
Kedi::~Kedi(){
cout << "Bir kedi nesnesi yok edildi." << endl;
}
class Kopek : public Hayvan
{
private:
string ses = "havhav";
public:
string sesiGetir()
{
return ses;
}
Kopek();
~Kopek();
};
//Kopek sınıfı icin constructor ve deconstructor
Kopek::Kopek(){
cout << "Bir kopek nesnesi olusturuldu." << endl;
}
Kopek::~Kopek(){
cout << "Bir kopek nesnesi yok edildi." << endl;
}
int main()
{
Kedi Tekir;
Kopek Karabas;
Tekir.ismiBelirle("Tekir");
Tekir.agirligiBelirle(5);
Karabas.ismiBelirle("Karabaş");
Karabas.agirligiBelirle(10);
// Hayvan sinifindan miras alinan ozellikleri cagirdik.
cout << Tekir.ismiGetir() << " isimli ";
cout << Tekir.agirligiGetir() << " agirligindaki ";
// Kedi sinifina ozel ozelligilimiz olan sesi cagirdik.
cout << "nesnemiz " << Tekir.sesiGetir() << " sesini cikarir." << endl;
// Hayvan sinifindan miras alinan ozellikleri cagirdik.
cout << Karabas.ismiGetir() << " isimli ";
cout << Karabas.agirligiGetir() << " agirligindaki ";
// Kedi sinifina ozel ozelligilimiz olan sesi cagirdik.
cout << "nesnemiz " << Karabas.sesiGetir() << " sesini cikarir." << endl;
return 0;
}

Örneğimizde hayvan isimli sınıfımızda diğer hayvanlarda kullanacağımız özellikleri tanımladık. Sonra ise Kedi isimli bir sınıf oluşturduk ve Hayvan sınıfının özelliklerini miras aldık. Böylelikle hem Hayvan sınıfının özelliklerine hem de Kedi sınıfının kendine özgü özelliklerine erişim sağladık.

Sonraki Bölüm: Sanal Fonksiyonlar:
Temel C++ - 6. Gün: Sanal Fonksiyonlar