For changing pre-existing methods and field inside a class, C-Sharp uses the virtual and override keywords.

  • Virtual is used inside parent classes, for specifying a given method can be overridden by an inheriting class.
  • Override is used inside child classes for specifying the compiler to use the new definition.

Take a look:

public class Parent
{
    public virtual void HelloWorld()  // Base method using virtual.
        => Console.WriteLine("Hello World!");
}
 
public class Child : Parent
{
    public override void HelloWorld() // Overridden method using override.
        => Console.WriteLine("New Hello World!");
}
 
Parent parent = new();
Child child = new();
 
 
parent.HelloWorld();  // Returns "Hello World!"
child.HelloWorld();  // Returns "New Hello World!"