---
title: "Difference between Method overriding and method hiding?"  
description: "Difference between Method overriding and method hiding?"  
author: "Niraj Kumar Mishra"  
published: 2017-08-23  
updated: 2020-09-24  
canonical: https://www.mindstick.com/interview/23287/difference-between-method-overriding-and-method-hiding  
category: "c#"  
tags: ["oops"]  
reading_time: 3 minutes  

---

# Difference between Method overriding and method hiding?

**Method Hiding**\

Method hiding is nothing but invoking the hidden base class method when the base class variable reference is pointing to the derived class object.This can be done by the new keyword in the derived class method implementation, in other words the derived class has the same method with the same name and signature.

## Example:

```
namespace ConsoleApplication1
{
    class BaseClass
    {
        public virtual void Method()
        {
            Console.WriteLine("Base-Method");
        }
    }
    class DerivedClass:BaseClass
    {
        public new void Method()
        {
            Console.WriteLine("Derived-Method");
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            DerivedClass obj = new DerivedClass();
            obj.Method();
            BaseClass obj1 = new DerivedClass();
            obj1.Method();

            Console.ReadKey();
        }
    }
}
```

## OUTPUT :

![Difference between Method overriding and method hiding?](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKMAAAA1CAYAAAAtU1veAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOwwAADsMBx2+oZAAAA/BJREFUeF7tmtuRpDAMRTuMzYFUCIUs9otAyGOy2HBYyy9kIWMzdDPqnkvVqVrwWzp4WOjHn7//Vhw4LByQEYeZAzLiMHN4GR+PBwA/D2QEZoCMwAz3yjis0/K1fi3TOqjlT2Sc7xmni7DuedTKvomp9T0JL+MwrcuXk4Qzj3qDS1iVcVxnt+ZlGvK1YVpcHJZ1GmTdOuNc9rEBGbvYZJzXMRfcKM2rOJMsWv+yOFJ9Wj+dQ8Zb0WV0+GtlMijYeecUgaCdhBIRdpRQZ7/TxLZy11XGOjv+rrxSR8XLOK3THMdz5/M0eiF7xi/WxsnrTDLGm9yXi/WmDSC3F/lwfHt970JVxhicJJQPBJNInueEpABpgqV6u0eAcqxcjwW7Nb48P78zurquTbihZjfvJFCo0xwvXuNr2NhES/2VcTi//t+1MxYBomcqIZZoI4Ontkn1RBLz9dy+FKE9vlJ+Jlm5rutnmdd5pn/zObTXT7RkLP5M8/mp8edjXlzfu9Aloy8Pd3bJFqCaZJJ6PQp4nIOcT2t8bf4yWbs+WH2qG+e0CcUE6lh/2Xa7FmjIqIolx2+s7xPoe2ZU7kzBdRlDMn3wmRyBxvjK/MudtsFuvECeT8f6iZftjFfX9y7oMlIg3J3PEkSBPpLtGTImKcb0HwlWdjw+28XpnPqh+XcmqzYnLldr/URdkIaMcv4OP16t/OT63oZNRrc4RhE4TwgIr8OTcyyj0la0L+odJLTanq+B2hfJPqZHxub4Wp1cHq7XZSTiBpCQc7+wvrfBy6gVAHA3kBGYATICM0BGYAbICMwAGYEZICOhvHq5yie+enk1QUblHZqpQIZ3cPylsH832PFVhFO+N+RARhNwGbdkRDmVF8E/Ar3wxe8NPx9dRv2rhP9ElXdP+S01CpzL98kt2p9JlJcRvzf8eI52RiknP/eBlwk/2El9fVYuzw+JMuL3hh9O9ZmxJYoIdth99rtFQPnVi//WWqsvyGO5fvB7w8/l8M80D6ZPiBBWBDsIGcu4zFpbD0vgrg5LPiU29rcJxebc03/RdrsWaMioiiXHF7JCxvPUZCwDHMqLRB4GO9TfhFR2jjMwGTkkV5hzX/8v2xmV8t3NDNr07YwUeF4ezo+C7dszgUgETageZF8JLldP/3VBGjIqN6Mfr1ZObRvxAQrVZ0YZyBRgj9sRRrcbiGQcttfqdMrZI2Nf/6JOLg/X6zIS8QZMyPXxRwUq27UHTYKMSgEAdwMZgRkgIzADZARmgIzADJARmAEyAjNARmAGyAjMABmBGSAjMANkBGaAjMAMkBGYATICM0BGYAbICMwAGYEZICMwA2QEZoCMwAaP9T9A7llgMc/U1AAAAABJRU5ErkJggg==)\

**Method Overriding**\

Method overriding is nothing but a feature by which a derived class can provide a new implementation for the base class method having the same name and signature as in a derived class.A derived class method can be overridden using the keyword override and that must be virtual or abstract in the base class.

## Example:

```
namespace ConsoleApplication1
{
    class BaseClass
    {
        public virtual void Method()
        {
            Console.WriteLine("Base-Method");
        }
    }
    class DerivedClass:BaseClass
    {
        public override void Method()
        {
            Console.WriteLine("Derived-Method");
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            DerivedClass obj = new DerivedClass();
            obj.Method();
            BaseClass obj1 = new DerivedClass();
            obj1.Method();

            Console.ReadKey();
        }
    }
}
```

**OUTPUT :**![Difference between Method overriding and method hiding?](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJ4AAAAyCAYAAACtW2LuAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOwwAADsMBx2+oZAAABEpJREFUeF7tmk2OnDAQhfs+XIWDZMExZsNiJsou2UykmRCpbzE3Iy7/US7KGIYGM9FD+qTGLlOuqmd3y83t7e3PiAvX2ZcR3rv/iAvXedft9fW3/4gL13nX7eXl+3i73QA4l+fnF70DgCOB8EAVzhVeM3bDx/gxdGOj9j+Qtj/Hzypc3H2r9X2SS8X3Cazwmm4cPowgOH2rD9jFVYXXjr2Jeeia2NZ0g8nDMHaNtM3T9ukzJiC8GZPw+rGNHScK5Ci2FIbiHwZDsKf46R7COwxdeAbbliaeEht3RBE07RCUdLdTOJv5DuLHyt1U8bXV/6w/Y6NihdeNXe/9mfu+a6341vhPYuPEOIPw/IK2/SLesNjjeFEPw6fjuyL2OMUWWQbqEhHEY4NmgpH3MfkhGZqYgt3sazz1Fe1YYkv+5f32Hc/YmjFu8fRm3kEszqboz7fxGCYmUYXnpXnYHv+X3/HoALksPPoNJEQkxshEqWOCnShYbI/j06KX/Sv9WwoTbc1zhn7se/rM51COnygJL/mq5fNT88997ozvitBfZkXh2X63YlOmZOQEJcnbUXL9HOR8Sv61+cvCzJ7B7MnWz2kSDxPLivjTsVOboyA8VUTSfyG+rwa9JKAGZtsWVpxgv/Bc4WyimRAcBf/K/NMdtMDMnyPOZ0X8xGE73t74roguPArarGhWDErqkrAeIbwggDb8yGd9y/7Z7kz39Bya/8rC5ObEhVSKn8iLoSA8OX+D9Zfr3xjfJZmEZwJhJEmyuOC5DS/EsvCUsWJ8YrdQvOx4HgONTwq7zBrhFf1rNrHfteeFR/jFHpBz3xHfJbHC0zoAOBIID1QBwgNVgPBAFSA8UAUID1ThXOEtHZc8mEsdNyjHKXv5L45TlHM87VxrP1cVnjtD4we49mxvxb8VnPTcjwPhzZiEx/+5OFEgR7GlMBQ/3sc7F114BtuWJt7+jRN2RBE07RCUdLdTOJv5DuLHyt1U8bXV/6w/Y6NihYf38U4lKzyfiCAeGzQTjLyPyQ/J0MQU7GZf46mvaMcSW/Iv77fveMbWjHGLB+/jHU7z7ccK4SlvZ4gxMlHqmGAnChbb4/i06GX/Sv+WwkRb8xy8j3cOq4Rn+92KTZmSkROUJG9HyfVzkPMp+dfmLwszewazJ1s/p0k8TCwr4k/HTm2OgvBUEUn/hfi+Glnh2baFFSfYLzxXOJtoJgRHwb8y/3QHLTDz54jzWRE/cdiOtze+K6ILj4I2K5oVg5K6JKxHCC8IAO/jeX+5/o3xXZJJeCYQRpIkiwue2/BCLAtPGSvGJ3YLxcuO5zHQ+KSwy6wRXtG/ZhP7XXteeIRf7AE59x3xXRIrPK0DgCOB8EAVIDxQBQgPVOHp/lfvAOBInu53vQOAI8GOB6oA4YEqQHigChAeqAKOU0AVIDxQBQgPVAHCA1WA8EAVIDxQhZ+/XvUOAI7kjv9qwencxn/h3dPQ52vxyAAAAABJRU5ErkJggg==)

So, you can say that in Method hiding BaseClass variable points to the method of

DerivedClass object .\

## Answers

### Answer by Niraj Kumar Mishra

**Method Hiding**\

Method hiding is nothing but invoking the hidden base class method when the base class variable reference is pointing to the derived class object.This can be done by the new keyword in the derived class method implementation, in other words the derived class has the same method with the same name and signature.

## Example:

```
namespace ConsoleApplication1
{
    class BaseClass
    {
        public virtual void Method()
        {
            Console.WriteLine("Base-Method");
        }
    }
    class DerivedClass:BaseClass
    {
        public new void Method()
        {
            Console.WriteLine("Derived-Method");
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            DerivedClass obj = new DerivedClass();
            obj.Method();
            BaseClass obj1 = new DerivedClass();
            obj1.Method();

            Console.ReadKey();
        }
    }
}
```

## OUTPUT :

![Difference between Method overriding and method hiding?](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKMAAAA1CAYAAAAtU1veAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOwwAADsMBx2+oZAAAA/BJREFUeF7tmtuRpDAMRTuMzYFUCIUs9otAyGOy2HBYyy9kIWMzdDPqnkvVqVrwWzp4WOjHn7//Vhw4LByQEYeZAzLiMHN4GR+PBwA/D2QEZoCMwAz3yjis0/K1fi3TOqjlT2Sc7xmni7DuedTKvomp9T0JL+MwrcuXk4Qzj3qDS1iVcVxnt+ZlGvK1YVpcHJZ1GmTdOuNc9rEBGbvYZJzXMRfcKM2rOJMsWv+yOFJ9Wj+dQ8Zb0WV0+GtlMijYeecUgaCdhBIRdpRQZ7/TxLZy11XGOjv+rrxSR8XLOK3THMdz5/M0eiF7xi/WxsnrTDLGm9yXi/WmDSC3F/lwfHt970JVxhicJJQPBJNInueEpABpgqV6u0eAcqxcjwW7Nb48P78zurquTbihZjfvJFCo0xwvXuNr2NhES/2VcTi//t+1MxYBomcqIZZoI4Ontkn1RBLz9dy+FKE9vlJ+Jlm5rutnmdd5pn/zObTXT7RkLP5M8/mp8edjXlzfu9Aloy8Pd3bJFqCaZJJ6PQp4nIOcT2t8bf4yWbs+WH2qG+e0CcUE6lh/2Xa7FmjIqIolx2+s7xPoe2ZU7kzBdRlDMn3wmRyBxvjK/MudtsFuvECeT8f6iZftjFfX9y7oMlIg3J3PEkSBPpLtGTImKcb0HwlWdjw+28XpnPqh+XcmqzYnLldr/URdkIaMcv4OP16t/OT63oZNRrc4RhE4TwgIr8OTcyyj0la0L+odJLTanq+B2hfJPqZHxub4Wp1cHq7XZSTiBpCQc7+wvrfBy6gVAHA3kBGYATICM0BGYAbICMwAGYEZICOhvHq5yie+enk1QUblHZqpQIZ3cPylsH832PFVhFO+N+RARhNwGbdkRDmVF8E/Ar3wxe8NPx9dRv2rhP9ElXdP+S01CpzL98kt2p9JlJcRvzf8eI52RiknP/eBlwk/2El9fVYuzw+JMuL3hh9O9ZmxJYoIdth99rtFQPnVi//WWqsvyGO5fvB7w8/l8M80D6ZPiBBWBDsIGcu4zFpbD0vgrg5LPiU29rcJxebc03/RdrsWaMioiiXHF7JCxvPUZCwDHMqLRB4GO9TfhFR2jjMwGTkkV5hzX/8v2xmV8t3NDNr07YwUeF4ezo+C7dszgUgETageZF8JLldP/3VBGjIqN6Mfr1ZObRvxAQrVZ0YZyBRgj9sRRrcbiGQcttfqdMrZI2Nf/6JOLg/X6zIS8QZMyPXxRwUq27UHTYKMSgEAdwMZgRkgIzADZARmgIzADJARmAEyAjNARmAGyAjMABmBGSAjMANkBGaAjMAMkBGYATICM0BGYAbICMwAGYEZICMwA2QEZoCMwAaP9T9A7llgMc/U1AAAAABJRU5ErkJggg==)\

**Method Overriding**\

Method overriding is nothing but a feature by which a derived class can provide a new implementation for the base class method having the same name and signature as in a derived class.A derived class method can be overridden using the keyword override and that must be virtual or abstract in the base class.

## Example:

```
namespace ConsoleApplication1
{
    class BaseClass
    {
        public virtual void Method()
        {
            Console.WriteLine("Base-Method");
        }
    }
    class DerivedClass:BaseClass
    {
        public override void Method()
        {
            Console.WriteLine("Derived-Method");
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            DerivedClass obj = new DerivedClass();
            obj.Method();
            BaseClass obj1 = new DerivedClass();
            obj1.Method();

            Console.ReadKey();
        }
    }
}
```

**OUTPUT :**![Difference between Method overriding and method hiding?](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJ4AAAAyCAYAAACtW2LuAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOwwAADsMBx2+oZAAABEpJREFUeF7tmk2OnDAQhfs+XIWDZMExZsNiJsou2UykmRCpbzE3Iy7/US7KGIYGM9FD+qTGLlOuqmd3y83t7e3PiAvX2ZcR3rv/iAvXedft9fW3/4gL13nX7eXl+3i73QA4l+fnF70DgCOB8EAVzhVeM3bDx/gxdGOj9j+Qtj/Hzypc3H2r9X2SS8X3Cazwmm4cPowgOH2rD9jFVYXXjr2Jeeia2NZ0g8nDMHaNtM3T9ukzJiC8GZPw+rGNHScK5Ci2FIbiHwZDsKf46R7COwxdeAbbliaeEht3RBE07RCUdLdTOJv5DuLHyt1U8bXV/6w/Y6NihdeNXe/9mfu+a6341vhPYuPEOIPw/IK2/SLesNjjeFEPw6fjuyL2OMUWWQbqEhHEY4NmgpH3MfkhGZqYgt3sazz1Fe1YYkv+5f32Hc/YmjFu8fRm3kEszqboz7fxGCYmUYXnpXnYHv+X3/HoALksPPoNJEQkxshEqWOCnShYbI/j06KX/Sv9WwoTbc1zhn7se/rM51COnygJL/mq5fNT88997ozvitBfZkXh2X63YlOmZOQEJcnbUXL9HOR8Sv61+cvCzJ7B7MnWz2kSDxPLivjTsVOboyA8VUTSfyG+rwa9JKAGZtsWVpxgv/Bc4WyimRAcBf/K/NMdtMDMnyPOZ0X8xGE73t74roguPArarGhWDErqkrAeIbwggDb8yGd9y/7Z7kz39Bya/8rC5ObEhVSKn8iLoSA8OX+D9Zfr3xjfJZmEZwJhJEmyuOC5DS/EsvCUsWJ8YrdQvOx4HgONTwq7zBrhFf1rNrHfteeFR/jFHpBz3xHfJbHC0zoAOBIID1QBwgNVgPBAFSA8UAUID1ThXOEtHZc8mEsdNyjHKXv5L45TlHM87VxrP1cVnjtD4we49mxvxb8VnPTcjwPhzZiEx/+5OFEgR7GlMBQ/3sc7F114BtuWJt7+jRN2RBE07RCUdLdTOJv5DuLHyt1U8bXV/6w/Y6NihYf38U4lKzyfiCAeGzQTjLyPyQ/J0MQU7GZf46mvaMcSW/Iv77fveMbWjHGLB+/jHU7z7ccK4SlvZ4gxMlHqmGAnChbb4/i06GX/Sv+WwkRb8xy8j3cOq4Rn+92KTZmSkROUJG9HyfVzkPMp+dfmLwszewazJ1s/p0k8TCwr4k/HTm2OgvBUEUn/hfi+Glnh2baFFSfYLzxXOJtoJgRHwb8y/3QHLTDz54jzWRE/cdiOtze+K6ILj4I2K5oVg5K6JKxHCC8IAO/jeX+5/o3xXZJJeCYQRpIkiwue2/BCLAtPGSvGJ3YLxcuO5zHQ+KSwy6wRXtG/ZhP7XXteeIRf7AE59x3xXRIrPK0DgCOB8EAVIDxQBQgPVOHp/lfvAOBInu53vQOAI8GOB6oA4YEqQHigChAeqAKOU0AVIDxQBQgPVAHCA1WA8EAVIDxQhZ+/XvUOAI7kjv9qwencxn/h3dPQ52vxyAAAAABJRU5ErkJggg==)

So, you can say that in Method hiding BaseClass variable points to the method of

DerivedClass object .\


---

Original Source: https://www.mindstick.com/interview/23287/difference-between-method-overriding-and-method-hiding

Copyright © MindStick Software Pvt. Ltd. This Markdown version is provided for developers, AI systems, and offline reading.
