Public, Private, Protected - Tryhardtocarry/2143-oop GitHub Wiki


📄 Page Title: private

# 🔒 private Access Modifier

The `private` access modifier restricts access to class members so they are **only accessible within the class itself**. It enforces strong encapsulation by hiding internal details.

---

## 🔍 Definition

- Only accessible from methods inside the same class.
- NOT accessible from outside or derived classes.

---

## 💡 Example in C++

```cpp
class Dog {
private:
    int age;

public:
    void setAge(int a) {
        age = a;
    }

    int getAge() {
        return age;
    }
};

int main() {
    Dog d;
    d.setAge(5);
    std::cout << d.getAge(); // Output: 5
    // d.age = 5; ❌  'age' is private
}
# 🛡️ protected Access Modifier

The `protected` access modifier allows class members to be accessed **within the same class** and by any **derived (child) classes**, but **not from outside** those classes.

---

## 🔍 Definition

- Accessible in the base class and its derived (inherited) classes.
- NOT accessible from outside the class hierarchy.

---

## 💡 Example in C++

```cpp
class Animal {
protected:
    int legs;
};

class Dog : public Animal {
public:
    void setLegs(int l) {
        legs = l; // ✅ Allowed in derived class
    }

    int getLegs() {
        return legs;
    }
};

int main() {
    Dog d;
    d.setLegs(4);
    std::cout << d.getLegs(); // Output: 4
    // d.legs = 4;  'legs' is protected
}