The protected access modifier lets a class share its members only with its own children (derived classes). It keeps things hidden from the outside world but open to family.
Protected access modifier in C Sharp (C#)
Start learning this pattern below
Jump into concepts and practice - no test required
protected type memberName; protected returnType MethodName(parameters) { // method body }
protected members are accessible inside the class and in any class that inherits from it.
They are not accessible from outside these classes.
name. Only Animal and its children can access it.class Animal { protected string name; }
Speak method is protected, so only Animal and subclasses can call it.class Animal { protected void Speak() { Console.WriteLine("Animal sound"); } }
Dog class inherits from Animal and can call the protected Speak method.class Dog : Animal { public void Bark() { Speak(); // allowed because Speak is protected } }
This program shows a base class Animal with a protected field and method. The Dog class inherits from Animal and can use the protected method ShowName. Trying to call ShowName from outside the class family causes an error.
using System; class Animal { protected string name; public Animal(string name) { this.name = name; } protected void ShowName() { Console.WriteLine($"Animal name is {name}"); } } class Dog : Animal { public Dog(string name) : base(name) {} public void Display() { ShowName(); // Accessing protected method from base class } } class Program { static void Main() { Dog dog = new Dog("Buddy"); dog.Display(); // dog.ShowName(); // Error: ShowName is protected } }
Protected members are a way to share inside a family of classes but keep secrets from others.
Remember, protected members are not visible to objects of the class, only to the class code and subclasses.
Protected means only the class and its children can see or use the member.
It helps keep code safe but still flexible for extensions.
Use it when you want to share with subclasses but hide from the outside world.
Practice
What does the protected access modifier mean in C#?
Solution
Step 1: Understand the meaning of protected
Theprotectedmodifier restricts access to the class itself and any classes that inherit from it.Step 2: Compare with other access levels
Unlike public or internal,protectedhides members from outside classes except subclasses.Final Answer:
Only the class itself and its subclasses can access the member. -> Option AQuick Check:
Protected = class + subclasses access [OK]
- Confusing protected with public
- Thinking protected allows access from unrelated classes
- Mixing protected with internal or private
Which of the following is the correct way to declare a protected method named Calculate in C#?
?
Solution
Step 1: Recall protected method syntax
In C#, the keywordprotectedis used before the return type to declare a protected method.Step 2: Check each option
protected void Calculate() { } usesprotected void Calculate(), which is correct syntax for a protected method.Final Answer:
protected void Calculate() { } -> Option DQuick Check:
Protected method syntax = protected + return type [OK]
- Using private or public instead of protected
- Omitting the return type
- Placing protected after the method name
Consider the following code:
class Parent {
protected int number = 5;
}
class Child : Parent {
public int GetNumber() {
return number;
}
}
class Program {
static void Main() {
Child c = new Child();
Console.WriteLine(c.GetNumber());
}
}What will be the output when this program runs?
Solution
Step 1: Understand protected member access in subclass
Thenumberfield is protected, so the subclassChildcan access it directly.Step 2: Trace the program output
TheGetNumbermethod returnsnumberwhich is 5, soConsole.WriteLineprints 5.Final Answer:
5 -> Option BQuick Check:
Protected field accessed in subclass = 5 [OK]
- Thinking protected means inaccessible outside parent
- Expecting compilation error due to access
- Confusing protected with private
Identify the error in this code snippet:
class Base {
protected int value = 10;
}
class Other {
void Show() {
Base b = new Base();
Console.WriteLine(b.value);
}
}Solution
Step 1: Check access of protected member from unrelated class
The classOtherdoes not inherit fromBase, so it cannot accessvaluewhich is protected.Step 2: Understand protected access rules
Protected members are accessible only within the class and its subclasses, not from unrelated classes.Final Answer:
Cannot access protected member from unrelated class instance. -> Option CQuick Check:
Protected access = class + subclasses only [OK]
- Assuming protected is like public
- Thinking inheritance is not required
- Ignoring access modifier rules
You want to create a base class Vehicle with a protected field speed. You also want a subclass Car that can set and get this speed, but no other class should access it directly. Which code snippet correctly implements this?
Solution
Step 1: Use protected field in base class
The fieldspeedis declared protected inVehicleso onlyVehicleand subclasses can access it.Step 2: Provide public methods in subclass to access speed
The subclassCarhas public methodsSetSpeedandGetSpeedto safely access the protected field.Step 3: Check other options for access control
class Vehicle { public int speed; } class Car : Vehicle { } // Any class can access speed directly uses public field, which allows all classes to access speed directly. class Vehicle { private int speed; } class Car : Vehicle { public int GetSpeed() { return speed; } } uses private field, so subclass cannot access it. class Vehicle { internal int speed; } class Car : Vehicle { } // speed accessible only in same assembly uses internal, which restricts access to assembly, not subclasses.Final Answer:
class Vehicle { protected int speed; } class Car : Vehicle { public void SetSpeed(int s) { speed = s; } public int GetSpeed() { return speed; } } -> Option AQuick Check:
Protected field + subclass methods = correct encapsulation [OK]
- Using public field exposing speed to all
- Using private field inaccessible to subclass
- Confusing internal with protected
