#616 – Base Class Needs to Know If Polymorphism Is Desired

Let’s say that you design a Dog class that contains a Bark method and that you don’t do anything special to design for inheritance.

    public class Dog
        public void Bark()

Now let’s say that you define several classes that inherit from Dog and provide their own implementation for the Bark method.  Because Dog.Bark was not marked as virtual, they must use the new keyword.

    public class Terrier : Dog
        public new void Bark()
            Console.WriteLine("Terrier says Grrrr");

But now you do not get polymorphic behavior when treating instances of Terrier as instances of Dog.

        static void Main()
            Terrier t = new Terrier();
            t.Bark();  // Terrier.Bark

        static void SomeoneBark(Dog d)
            d.Bark();  // Dog.Bark always invoked--no polymorphism

To achieve polymorphism, you must design for it in the base class by marking a method as virtual.


About Sean
Software developer in the Twin Cities area, passionate about software development and sailing.

2 Responses to #616 – Base Class Needs to Know If Polymorphism Is Desired

  1. Steven says:

    Awesome stuff, Sean. Thanks!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: