Bird
Raised Fist0
C Sharp (C#)programming~20 mins

Protected access modifier in C Sharp (C#) - Practice Problems & Coding Challenges

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Challenge - 5 Problems
🎖️
Protected Access Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
Output of accessing protected member in derived class
What is the output of this C# code when run?
C Sharp (C#)
class Animal {
    protected string sound = "Roar";
}

class Lion : Animal {
    public void MakeSound() {
        System.Console.WriteLine(sound);
    }
}

class Program {
    static void Main() {
        Lion lion = new Lion();
        lion.MakeSound();
    }
}
ARoar
BCompilation error: 'sound' is inaccessible due to its protection level
CRuntime error: NullReferenceException
DNo output
Attempts:
2 left
💡 Hint
Remember that protected members are accessible in derived classes.
Predict Output
intermediate
2:00remaining
Accessing protected member from outside derived class
What happens when this C# code is compiled?
C Sharp (C#)
class Vehicle {
    protected int speed = 100;
}

class Car : Vehicle {
}

class Program {
    static void Main() {
        Vehicle v = new Vehicle();
        System.Console.WriteLine(v.speed);
    }
}
ACompilation error: 'speed' is inaccessible due to its protection level
BNo output
C100
DRuntime error: NullReferenceException
Attempts:
2 left
💡 Hint
Protected members are not accessible from outside the class or its derived classes.
🔧 Debug
advanced
2:00remaining
Why does this code cause a compilation error?
This code tries to access a protected member from an unrelated class. What is the cause of the compilation error?
C Sharp (C#)
class Parent {
    protected int number = 42;
}

class Child : Parent {
}

class Stranger {
    void ShowNumber() {
        Parent p = new Parent();
        System.Console.WriteLine(p.number);
    }
}
AThe 'number' field is private, so it cannot be accessed outside Parent.
BThe 'Parent' class must be declared as public to access its members.
CProtected members can only be accessed within the class or its derived classes, not from unrelated classes.
DThe 'ShowNumber' method is not static, causing the error.
Attempts:
2 left
💡 Hint
Think about who can access protected members.
Predict Output
advanced
2:00remaining
Output when accessing protected member via derived class reference
What is the output of this C# program?
C Sharp (C#)
class Base {
    protected string message = "Hello from Base";
}

class Derived : Base {
    public void PrintMessage() {
        System.Console.WriteLine(message);
    }
}

class Program {
    static void Main() {
        Base b = new Derived();
        ((Derived)b).PrintMessage();
    }
}
ACompilation error: Cannot convert Base to Derived
BHello from Base
CRuntime error: InvalidCastException
DNo output
Attempts:
2 left
💡 Hint
Casting to the derived type allows access to its methods.
🧠 Conceptual
expert
3:00remaining
Understanding protected access in nested classes
Consider this C# code. What is the output when running Main?
C Sharp (C#)
class Outer {
    protected int value = 10;
    public class Inner : Outer {
        public void ShowValue() {
            System.Console.WriteLine(value);
        }
    }
}

class Program {
    static void Main() {
        Outer.Inner inner = new Outer.Inner();
        inner.ShowValue();
    }
}
ANo output
BCompilation error: 'value' is inaccessible due to its protection level
CRuntime error: NullReferenceException
D10
Attempts:
2 left
💡 Hint
Nested classes can inherit and access protected members of the outer class.

Practice

(1/5)
1.

What does the protected access modifier mean in C#?

easy
A. Only the class itself and its subclasses can access the member.
B. Any code in the same assembly can access the member.
C. Only code outside the class can access the member.
D. The member is accessible everywhere without restriction.

Solution

  1. Step 1: Understand the meaning of protected

    The protected modifier restricts access to the class itself and any classes that inherit from it.
  2. Step 2: Compare with other access levels

    Unlike public or internal, protected hides members from outside classes except subclasses.
  3. Final Answer:

    Only the class itself and its subclasses can access the member. -> Option A
  4. Quick Check:

    Protected = class + subclasses access [OK]
Hint: Protected means class and subclasses only [OK]
Common Mistakes:
  • Confusing protected with public
  • Thinking protected allows access from unrelated classes
  • Mixing protected with internal or private
2.

Which of the following is the correct way to declare a protected method named Calculate in C#?

?
easy
A. internal void Calculate() { }
B. private void Calculate() { }
C. public void Calculate() { }
D. protected void Calculate() { }

Solution

  1. Step 1: Recall protected method syntax

    In C#, the keyword protected is used before the return type to declare a protected method.
  2. Step 2: Check each option

    protected void Calculate() { } uses protected void Calculate(), which is correct syntax for a protected method.
  3. Final Answer:

    protected void Calculate() { } -> Option D
  4. Quick Check:

    Protected method syntax = protected + return type [OK]
Hint: Protected methods start with 'protected' keyword [OK]
Common Mistakes:
  • Using private or public instead of protected
  • Omitting the return type
  • Placing protected after the method name
3.

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?

medium
A. 0
B. 5
C. Compilation error
D. Runtime error

Solution

  1. Step 1: Understand protected member access in subclass

    The number field is protected, so the subclass Child can access it directly.
  2. Step 2: Trace the program output

    The GetNumber method returns number which is 5, so Console.WriteLine prints 5.
  3. Final Answer:

    5 -> Option B
  4. Quick Check:

    Protected field accessed in subclass = 5 [OK]
Hint: Protected members accessible in subclass methods [OK]
Common Mistakes:
  • Thinking protected means inaccessible outside parent
  • Expecting compilation error due to access
  • Confusing protected with private
4.

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);
    }
}
medium
A. Class Other must inherit Base to access value.
B. Missing semicolon after declaration.
C. Cannot access protected member from unrelated class instance.
D. No error, code runs fine.

Solution

  1. Step 1: Check access of protected member from unrelated class

    The class Other does not inherit from Base, so it cannot access value which is protected.
  2. Step 2: Understand protected access rules

    Protected members are accessible only within the class and its subclasses, not from unrelated classes.
  3. Final Answer:

    Cannot access protected member from unrelated class instance. -> Option C
  4. Quick Check:

    Protected access = class + subclasses only [OK]
Hint: Protected not accessible from unrelated classes [OK]
Common Mistakes:
  • Assuming protected is like public
  • Thinking inheritance is not required
  • Ignoring access modifier rules
5.

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?

hard
A. class Vehicle { protected int speed; } class Car : Vehicle { public void SetSpeed(int s) { speed = s; } public int GetSpeed() { return speed; } }
B. class Vehicle { public int speed; } class Car : Vehicle { } // Any class can access speed directly
C. class Vehicle { private int speed; } class Car : Vehicle { public int GetSpeed() { return speed; } }
D. class Vehicle { internal int speed; } class Car : Vehicle { } // speed accessible only in same assembly

Solution

  1. Step 1: Use protected field in base class

    The field speed is declared protected in Vehicle so only Vehicle and subclasses can access it.
  2. Step 2: Provide public methods in subclass to access speed

    The subclass Car has public methods SetSpeed and GetSpeed to safely access the protected field.
  3. 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.
  4. Final Answer:

    class Vehicle { protected int speed; } class Car : Vehicle { public void SetSpeed(int s) { speed = s; } public int GetSpeed() { return speed; } } -> Option A
  5. Quick Check:

    Protected field + subclass methods = correct encapsulation [OK]
Hint: Protected field with public subclass methods controls access [OK]
Common Mistakes:
  • Using public field exposing speed to all
  • Using private field inaccessible to subclass
  • Confusing internal with protected