Kursusindhold
C++ OOP
C++ OOP
Adgangsmodifikatorer i Arv
Adgangsmodifikatorer spiller en afgørende rolle i objektorienteret programmering, især ved arv. De bestemmer, hvordan medlemmer (attributter og metoder) i en basisklasse kan tilgås af afledte klasser. Forståelse af disse modifikatorer er væsentlig for at designe effektive klasser og opretholde dataindkapsling og integritet.
Adgangstyper ved arv
En klasse kan nedarves fra en anden klasse. Den afledte klasse arver medlemmer fra basisklassen, men tilgængeligheden af disse nedarvede medlemmer afhænger både af adgangsmodifikatoren, der bruges i basisklassen, og typen af arv.
Base Class public | Base Class protected | Base Class private | |
---|---|---|---|
public | Public in Derived Class | Protected in Derived Class | Not Accessible |
protected | Protected in Derived Class | Protected in Derived Class | Not Accessible |
private | Private in Derived Class | Private in Derived Class | Not Accessible |
public.cpp
protected.cpp
private.cpp
class Derived : public Base { // publicMember is public // protectedMember is protected // privateMember is not accessible };
Adgangskontrol og arv – Konklusion
I objektorienteret arv er private
medlemmer af en basisklasse utilgængelige for afledte klasser, hvilket beskytter dem mod ændring eller adgang. Protected
medlemmer kan kun tilgås inden for subklassen, mens public
medlemmer kan tilgås eksternt. Du kan eksperimentere med dette ved at bruge kodeeksemplet nedenfor.
main.cpp
class Base { public: int publicAttribute; protected: int protectedAttribute; private: int privateAttribute; }; class PublicDerived : public Base {}; class ProtectedDerived : protected Base {}; class PrivateDerived : private Base {}; int main() { PublicDerived obj1; ProtectedDerived obj2; PrivateDerived obj3; }
Protected
-medlemmer, som er tilgængelige inden for afledte og yderligere afledte klasser, fungerer som en bro mellem private
og public
elementer.
Konstruktører og destruktører bliver automatisk kaldt for afledte klasse objekter, hvilket sikrer korrekt initialisering og oprydning af ressourcer. For at få direkte adgang til disse elementer fra basisklassen, skal konstruktører og destruktører deklareres som public
.
Tak for dine kommentarer!