Conteúdo do Curso
C++ OOP
C++ OOP
Access Modifiers in Inheritance
Access modifiers in inheritance are crucial in C++ object-oriented programming. They dictate how members (attributes and methods) of a base class can be accessed by a derived class. Understanding these modifiers is essential for effective class design and for maintaining encapsulation and integrity of the data.
Access Types of Inheritance
A class can be derived from another class. The derived class inherits members from the base class, but the accessibility of these inherited members depends on both the access modifier used in the base class and the type of inheritance.
Base Class public | Base Class protected | Base Class private | |
public Inheritance | |||
protected Inheritance | |||
private Inheritance |
This table provides a clear overview of how the access level of members from a base class changes in the derived class, depending on the type of inheritance used.
public
protected
private
class Derived : public Base { // publicMember is public // protectedMember is protected // privateMember is not accessible };
Access Control and Inheritance Conclusion
In object-oriented inheritance, base class private members are inaccessible to derived classes, safeguarding them from modification or retrieval and protected members can only be accessed within the subclass, while public members can be accessed externally. You can experiment with it using code snippet below.
main
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; }
Remember
Protected members, accessible within derived and subsequent derived classes, they serve as bridge between private and public elements.
Constructors and destructors are automatically invoked for derived class objects, ensuring proper resource initialization and cleanup. To access these base class elements directly, constructors and destructors must be declared public.
Obrigado pelo seu feedback!