Start learning free

LESSON 404 OF 413 · OBJECT-ORIENTED PROGRAMMING

Calling the Parent with base in C# in C#

Practice

TL ; DR:

Inside an overriding method, base.Bark() calls the parent's version of Bark on the same object. This lets you extend the parent's behavior instead of replacing it.


class Puppy : Dog {
    public Puppy(string name) : base(name) { }
    public override void Bark() {
        base.Bark();   // do everything the parent did
        Console.WriteLine("Yip! Said " + name);
    }
}

Why it matters

Overriding a method replaces the parent's behavior. Often you want to extend it instead: keep what the parent did and add something more. A typical example is a save method: the parent writes the row to the database, and a subclass runs the parent's save first and then writes a log line.

Your task

The Puppy class already overrides Bark(), but the body is empty. Inside Puppy.Bark():

  1. call the parent's version with base.Bark();, so Woof! I am <name> still prints;
  2. then Console.WriteLine("Yip! Said " + name);.

Notes:

  • The constructor's : base(name) (already written) passes the name to Dog's constructor; base.Bark() does the same for a method.
  • Dog.Bark is virtual and Puppy.Bark is override; both are already written. name is a public field of Dog.

The driver (already written, it runs when you press Run):

Puppy buddy = new Puppy("Buddy");
buddy.Bark();
Puppy rex = new Puppy("Rex");
rex.Bark();
Dog dog = new Dog("Max");
dog.Bark();
  • buddy is a Puppy: its bark prints the parent's line, then its own.
  • rex is another Puppy: the names come from the object, nothing is hard-coded.
  • dog is a plain Dog: its bark is unchanged and prints only the parent's line, with no Yip!.

Expected output:

Woof! I am Buddy
Yip! Said Buddy
Woof! I am Rex
Yip! Said Rex
Woof! I am Max
STEP 1 OF 2
    Ctrl + Enter to check

    Base Keyword in C#

    Keep going with C#About 340 step-by-step lessons, from your first line of code to coding interviews. Free to start.
    Start learning free