I guess, it means the following
public abstract class myBase
{
public abstract void sayHello();
}
public class child : myBase
{
public override void sayHello()
{
Console.WriteLine("hello");
}
}
Let's say, you want to add a new method in derived class(es) that should also be in base class, you could do
public abstract class myBase
{
public abstract void sayHello();
public virtual void saySomething()
{
Console.WriteLine("default something");
}
}
public class child : myBase
{
public override void sayHello()
{
Console.WriteLine("hello");
}
}
Here, the code adds the default implementation in the base class & it won't break any other code. Also, derived classes can provide for override
en behavior, if it differs from base's saySomething
.
With this in mind, inherting class(es) can provide for its own implementation.
public abstract class myBase
{
public abstract void sayHello();
// here, if one can throw `NotImplementedException`
public virtual void saySomething()
{
Console.WriteLine("default something");
}
}
public class child : myBase
{
public override void sayHello()
{
Console.WriteLine("hello");
}
public override void saySomething()
{
Console.WriteLine("child said something");
}
}