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

Base keyword behavior in C Sharp (C#) - Interactive Code Practice

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
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to call the base class method from the derived class.

C Sharp (C#)
public class Animal {
    public virtual string Speak() {
        return "Animal sound";
    }
}

public class Dog : Animal {
    public override string Speak() {
        return [1].Speak();
    }
}
Drag options to blanks, or click blank then click option'
Abase
Bthis
Csuper
Dparent
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'this' instead of 'base' to call the base class method.
Using 'super' which is not a C# keyword.
2fill in blank
medium

Complete the constructor to call the base class constructor with a parameter.

C Sharp (C#)
public class Vehicle {
    public string Brand;
    public Vehicle(string brand) {
        Brand = brand;
    }
}

public class Car : Vehicle {
    public Car(string brand) : [1](brand) {
    }
}
Drag options to blanks, or click blank then click option'
Athis
Bbase
Csuper
Dparent
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'this' instead of 'base' to call the base constructor.
Using 'super' which is not valid in C#.
3fill in blank
hard

Fix the error by correctly calling the base class method inside the overridden method.

C Sharp (C#)
public class Printer {
    public virtual void Print() {
        Console.WriteLine("Printing from Printer");
    }
}

public class ColorPrinter : Printer {
    public override void Print() {
        [1].Print();
        Console.WriteLine("Printing in color");
    }
}
Drag options to blanks, or click blank then click option'
Abase
Bthis
Csuper
Dparent
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'this' which calls the current class method causing recursion.
Using 'super' which is not a C# keyword.
4fill in blank
hard

Fill both blanks to correctly override a method and call the base method inside it.

C Sharp (C#)
public class Logger {
    public virtual void Log(string message) {
        Console.WriteLine("Log: " + message);
    }
}

public class FileLogger : Logger {
    public override void Log(string message) {
        [1].Log(message);
        Console.WriteLine("Writing to file");
    }
}
Drag options to blanks, or click blank then click option'
Abase
Bthis
Csuper
Dparent
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'super' or 'parent' which are invalid in C#.
Using 'this' to call the base method causing recursion.
5fill in blank
hard

Fill all three blanks to override a method, call the base method, and add extra behavior.

C Sharp (C#)
public class Shape {
    public virtual double Area() {
        return 0;
    }
}

public class Circle : Shape {
    private double radius;
    public Circle(double radius) {
        this.radius = radius;
    }
    public override double Area() {
        double baseArea = [1].Area();
        double circleArea = Math.PI * radius * radius;
        return baseArea + [2];
    }
}
Drag options to blanks, or click blank then click option'
Athis
BcircleArea
Cbase
Dradius
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'this' instead of 'base' to call the base method.
Returning only circleArea without adding baseArea.

Practice

(1/5)
1. What does the base keyword do in C#?
easy
A. It creates a new instance of a class.
B. It allows a child class to access members of its parent class.
C. It defines a new class.
D. It deletes an object from memory.

Solution

  1. Step 1: Understand the role of base

    The base keyword is used in a child class to refer to its parent class members.
  2. Step 2: Identify what base allows

    It allows access to parent class methods, properties, or constructors from the child class.
  3. Final Answer:

    It allows a child class to access members of its parent class. -> Option B
  4. Quick Check:

    base keyword = access parent members [OK]
Hint: Remember: base = parent class access [OK]
Common Mistakes:
  • Confusing base with new instance creation
  • Thinking base deletes objects
  • Assuming base defines a class
2. Which of the following is the correct way to call a parent class constructor using base in C#?
easy
A. public Child() : base() { }
B. public Child() base() { }
C. public Child() call base() { }
D. public Child() : parent() { }

Solution

  1. Step 1: Recall syntax for calling parent constructor

    In C#, to call a parent constructor, use : base() after the child constructor signature.
  2. Step 2: Match correct syntax

    public Child() : base() { } uses public Child() : base() { }, which is the correct syntax.
  3. Final Answer:

    public Child() : base() { } -> Option A
  4. Quick Check:

    Parent constructor call = : base() [OK]
Hint: Use colon and base() after constructor name [OK]
Common Mistakes:
  • Omitting colon before base()
  • Using base() inside constructor body incorrectly
  • Using wrong keyword like parent()
3. What will be the output of the following code?
class Parent {
    public virtual void Show() {
        Console.WriteLine("Parent Show");
    }
}
class Child : Parent {
    public override void Show() {
        base.Show();
        Console.WriteLine("Child Show");
    }
}

var obj = new Child();
obj.Show();
medium
A. Child Show
B. Parent Show
C. Compilation error
D. Parent Show\nChild Show

Solution

  1. Step 1: Understand method overriding and base call

    The Child class overrides Show() and calls base.Show() which runs the Parent version first.
  2. Step 2: Trace the output

    First, "Parent Show" is printed from base.Show(), then "Child Show" is printed from the child method.
  3. Final Answer:

    Parent Show Child Show -> Option D
  4. Quick Check:

    base.Method() runs parent method first [OK]
Hint: base.Method() runs parent method inside override [OK]
Common Mistakes:
  • Ignoring base.Show() call
  • Expecting only child output
  • Thinking code causes error
4. Identify the error in this code snippet:
class Parent {
    public void Display() {
        Console.WriteLine("Parent Display");
    }
}
class Child : Parent {
    public override void Display() {
        base.Display();
        Console.WriteLine("Child Display");
    }
}
medium
A. Cannot override non-virtual method Display() in Parent.
B. base.Display() is invalid syntax.
C. Child class must not call base.Display().
D. No error, code runs fine.

Solution

  1. Step 1: Check method overriding rules

    In C#, only methods marked virtual or abstract in the parent can be overridden.
  2. Step 2: Analyze the Parent class method

    The Display() method in Parent is not virtual, so override in Child causes a compile error.
  3. Final Answer:

    Cannot override non-virtual method Display() in Parent. -> Option A
  4. Quick Check:

    Override requires virtual method [OK]
Hint: Only virtual methods can be overridden [OK]
Common Mistakes:
  • Trying to override non-virtual method
  • Confusing base call syntax
  • Assuming override works without virtual
5. Given the classes below, what will be the output?
class A {
    public virtual string GetName() => "A";
}
class B : A {
    public override string GetName() => "B";
}
class C : B {
    public override string GetName() => base.GetName() + "C";
}

var obj = new C();
Console.WriteLine(obj.GetName());
hard
A. AC
B. Compilation error
C. BC
D. C

Solution

  1. Step 1: Trace method calls through inheritance

    Class C overrides GetName() and calls base.GetName(), which refers to B's override returning "B".
  2. Step 2: Combine returned strings

    C appends "C" to the result from B, so the final string is "B" + "C" = "BC".
  3. Final Answer:

    BC -> Option C
  4. Quick Check:

    base.GetName() calls immediate parent method [OK]
Hint: base calls immediate parent method, not grandparent [OK]
Common Mistakes:
  • Assuming base calls grandparent method
  • Ignoring string concatenation
  • Expecting only "C" output