OOП Наследство - INHERITANCEЕден од најважните концепти во објектно-ориентираното програмирање е тој на наследството. Наследството ни овозможува да дефинираме класа во смисла на друга класа, што го олеснува креирањето и одржувањето на апликацијата. Ова исто така дава можност за повторна употреба на функционалноста на кодот и брзо време на имплементација. Кога креирате класа, наместо да пишувате целосно нови членови на податоци и функции на членови, можете да определите дека новата класа треба да ги наследува членовите на постојната класа. Оваа постоечка класа се нарекува основна класа, а новата класа се нарекува изведена класа. На пример, цицач е животно, куче е цицач, па оттука и куче е животно и така натаму. Основни и изведени класи Класа може да се изведе од повеќе класи, што значи дека може да наследи податоци и функции од повеќе основни класи. За да дефинираме изведена класа, ние користиме список со деривации на класа за да ја одредиме основната класа (и). Список за изведување на класа именува една или повеќе основни класи. class izvedena_klasa: specifikaror_za_pristap osnovna_klasa
Каде што спецификаторот за пристап е еден од public, protected или private, а основната класа е името на претходно дефинираната класа. Ако спецификаторот за пристап не се користи, тогаш тој е стандарден приватен. Видови на наследствоПостојат различни видови на наследство:
Единечна наследностЕдинечното наследство претставува форма на наследство кога има само една основна класа и една изведена класа.
Пример 1 #include <iostream> using namespace std;
// osnovna klasa Figura class Figura { protected: int sirina; int visina;
public: void setSirina(int s) { sirina = s; } void setVisina(int v) { visina = v; }
};
// Izvedena klasa class Pravoagolnik: public Figura { public: int povrsina() { return (sirina * visina); } };
int main(void) { Pravoagolnik Pr; int povrs; Pr.setSirina(5); Pr.setVisina(7); povrs= Pr.povrsina();
// Presmetuva i pecati povrsina na objekt. cout << "Povrsina: " << Pr.povrsina() << endl; return 0; } Повеќекратно наследствоПовеќекратно наследување претставува еден вид наследство кога изведена класа наследува својства од повеќе класи. На пример, постојат три класи А, Б и Ц, а изведената класа е Д, како што е прикажано подолу:
Ако сакате да креирате класа со повеќе основни класи, треба да ја користите следнава синтакса: class izvedena_klasa: specifikator_za_pristap osnovna_klasa1,...,specifikator_za_pristap osnovna_klasaN Пример за повеќекратно наследување#include <iostream> using namespace std;
// Osnovna klasa class Prva_OK { public: void Funkcija() { cout << "Nekoja sodrzina od prvata osnovna klasa." ; } };
// Vtora osnovna klasa class Vtora_OK{ public: void VtoraFunkcija() { cout << " Nekoja sodrzina od vtora osnovna klasa." ; } };
// Izvedena klasa class Izvedena: public Prva_OK, public Vtora_OK{ };
int main() { Izvedena Klasa; Klasa.Funkcija(); Klasa.VtoraFunkcija(); return 0;
}
#include <iostream> using namespace std;
// osnovna klasa Figura
class Figura { protected: int sirina; int visina;
public: void setSirina(int s) { sirina = s; } void setVisina(int v) { visina = v; }
};
// Osnovna klasa Cena
class Cena{ public: int getCena(int povrs) { return povrs* 70; } };
// Izvedena class
class Pravoagolnik: public Figura, public Cena {
public: int povrsina() { return (sirina * visina); } };
int main(void) { Pravoagolnik Pr; int povrs;
Pr.setSirina(5); Pr.setVisina(7);
povrs= Pr.povrsina();
// Presmetuva i pecati povrsina na objekt. cout << "Povrsina: " << Pr.povrsina() << endl;
// Presmetuva i pecati cena na boenje na objekt cout << "Cena na povrsina: " << Pr.getCena(povrs) << endl;
return 0; }
|