Mühazirə14: C++-da varislik və virtual funksiyalar


İcazə spesifikatorlarının xüsusiyyətləri



Yüklə 0,59 Mb.
səhifə4/9
tarix19.06.2022
ölçüsü0,59 Mb.
#61805
növüMühazirə
1   2   3   4   5   6   7   8   9
Varislik.Virtual funk.

14.3. İcazə spesifikatorlarının xüsusiyyətləri:
1. Baza sinif törəmə sinifidə public açar sözü ilə varislənirsə (icazə spesifikatoru = public) onda baza sinifin public , protectedprivate üzvləri törəmə sinifın public , protectedprivate üzvlərinə çevrilirlər. Yəni icazələr dəyişilməz qalır. Nümunə:
#include
using namespace std;

class base {


int i, j;
public:
void set (int a, int b) { i = a; j = b; }
void show() { cout << i << " " << j << "\n"; }
};

class derived : public base {


int k;
public:
derived(int x) { k = x; }
void showk() { cout << k << "\n"; }
};

int main(){


derived ob(3);
ob.set(1, 2); // base üzvünə müraciət(müdaxilə)
ob.show(); // base üzvünə müraciət(müdaxilə)
ob.showk(); // derived üzvünə müraciət(müdaxilə)
return 0;
}

2. Baza sinif törəmə sinifdə protected(qorunan) açar sözü ilə varislənirsə(icazə spesifikatoru = protected) onda baza sinifin publicprotected üzvləri törəmə sinifın protected üzvlərinə çevrilirlər. Private üzvlər olduğu kimi qalırlar. Nümunə:
#include
using namespace std;
class base {
int i;
protected:
int j;
public:
int k;
void seti(int a) { i = a; }
int geti() { return i; }
};
// baza sinifi üzvləri derived sinifində protected varis olunur.

class derived : protected base {


public:
void setj(int a) { j = a; } // j —protected-üzvdür
void setk(int a) { k = a; } // k —protected-üzvdür
int getj() { return j; }
int getk() { return k; }
};

int main()


{
derived ob;
// ob.seti (10); Səhv! protected üzvə müdaxilə oluna bilməz
// cout << ob.geti(); // Səhv! geti() —protected-üzvdür.
//ob.k=10; // Səhv! k — protected- üzvdür.
ob.setk(10);
cout << ob.getk() << ' ';
ob.setj(12);
cout << ob.getj() << ' ';
return 0; }

3. Baza sinif törəmə sinifdə private açar sözü ilə varislənirsə (icazə spesifikatoru = private) onda baza sinifin publicprotected üzvləri törəmə sinifın private üzvlərinə çevrilirlər. Yəni varis sinif xaricində varis sinifin obyekti tərəfindən bu üzvlər istifadə oluna bilməzlər. Nümunə:
#include
using namespace std;
class base {
int i, j;
public:
void set (int a, int b) { i = a; j = b; }
void show() { cout << i << " " << j << "\n"; }
};

class derived : private base // base sinifin açıq üzvləri indi derived sinifini bağlı üzvlərinə çevrildilər.


{
int k;
public:
derived(int x) { k = x; }
void showk() { cout << k << "\n"; set(2,3); show();}
};
int main()
{
derived ob (3);
ob.showk();
ob.set(1, 2); // Səhv! set()-ə müdaxiləyə icazə yoxdur.
ob.show(); // Səhv! show() -ya müdaxiləyə icazə yoxdur.
return 0;
}

Yuxaridakı hər üç halda baza sinifin private üzvləri varis sinifin də private üzvləri olurlar. Yəni private icazəsi olan üzv dəyişənlərin və ya üzv-funksiyaların icazələri dəyişilməz qalır.


Yüklə 0,59 Mb.

Dostları ilə paylaş:
1   2   3   4   5   6   7   8   9




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin