Protected access modifier in C Sharp (C#) - Time & Space Complexity
Start learning this pattern below
Jump into concepts and practice - no test required
Let's explore how the time it takes to access members with the protected modifier grows as the program runs.
We want to see how the cost changes when accessing protected members in inheritance scenarios.
Analyze the time complexity of accessing a protected member inside a derived class method.
class BaseClass {
protected int value = 10;
}
class DerivedClass : BaseClass {
public int GetValue() {
return value;
}
}
var obj = new DerivedClass();
int result = obj.GetValue();
This code shows a derived class accessing a protected field from its base class.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Accessing the protected field
valueonce per method call. - How many times: Exactly once each time
GetValue()is called.
Accessing a protected member is a simple direct operation that does not depend on input size.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | 1 |
| 100 | 1 |
| 1000 | 1 |
Pattern observation: The number of operations remains constant (1) independent of input size.
Time Complexity: O(1)
This means accessing a protected member takes the same small amount of time no matter how many times you do it.
[X] Wrong: "Accessing protected members is slower because it involves extra checks or inheritance overhead."
[OK] Correct: Accessing protected members is just like accessing other fields inside the class or derived classes; it does not add extra time per access.
Understanding how access modifiers affect performance helps you write clear and efficient code, showing you know both design and practical impact.
"What if we changed the protected field to a property with a getter method? How would the time complexity change?"
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
