You must Sign In to post a response.
  • Category: .NET

    Different types of overriding?

    Can any1 tel m different types of overriding with examples?
  • #299635
    Please go though the following tutorial

    http://www.codeproject.com/KB/cs/cs_methodoverride.aspx

  • #299639
    Method overriding in C# is a feature like the virtual function in C++. Method overriding is a feature that allows you to invoke functions (that have the same signatures) that belong to different classes in the same hierarchy of inheritance using the base class reference. C# makes use of two keywords: virtual and overrides to accomplish Method overriding.

    class BC
    {
    public void Display()
    {
    System.Console.WriteLine("BC::Display");
    }
    }

    class DC : BC
    {
    new public void Display()
    {
    System.Console.WriteLine("DC::Display");
    }
    }

    class Demo
    {
    public static void Main()
    {
    BC b;
    b = new BC();
    b.Display();
    }
    }

  • #299641
    Virtual and Overridden Methods

    Only if a method is declared virtual, derived classes can override this method if they are explicitly declared to override the virtual base class method with the override keyword.

    using System;
    namespace Polymorphism
    {
    class A
    {
    public virtual void Foo() { Console.WriteLine("A::Foo()"); }
    }

    class B : A
    {
    public override void Foo() { Console.WriteLine("B::Foo()"); }
    }

    class Test
    {
    static void Main(string[] args)
    {
    A a;
    B b;

    a = new A();
    b = new B();
    a.Foo(); // output --> "A::Foo()"
    b.Foo(); // output --> "B::Foo()"

    a = new B();
    a.Foo(); // output --> "B::Foo()"
    }
    }
    }
    Method Hiding

    Why did the compiler in the second listing generate a warning? Because C# not only supports method overriding, but also method hiding. Simply put, if a method is not overriding the derived method, it is hiding it. A hiding method has to be declared using the new keyword. The correct class definition in the second listing is thus:

    using System;
    namespace Polymorphism
    {
    class A
    {
    public void Foo() { Console.WriteLine("A::Foo()"); }
    }

    class B : A
    {
    public new void Foo() { Console.WriteLine("B::Foo()"); }
    }

    class Test
    {
    static void Main(string[] args)
    {
    A a;
    B b;

    a = new A();
    b = new B();
    a.Foo(); // output --> "A::Foo()"
    b.Foo(); // output --> "B::Foo()"

    a = new B();
    a.Foo(); // output --> "A::Foo()"
    }
    }
    }

    Combining Method Overriding and Hiding

    Methods of a derived class can both be virtual and at the same time hide the derived method. In order to declare such a method, both keywords virtual and new have to be used in the method declaration:

    class A
    {
    public void Foo() {}
    }

    class B : A
    {
    public virtual new void Foo() {}
    }


    A class C can now declare a method Foo() that either overrides or hides Foo() from class B:

    class C : B
    {
    public override void Foo() {}
    // or
    public new void Foo() {}
    }

  • #299756
    Overriding is the concept of providing a new implementation of derived class member as compared to its based class. In VB.NET, we do overriding using the overrides keyword, while in C#, overriding is achieved using the override keyword. For a class member to be overridable, we use the keyword virtual while defining it (in C#), and we use the keyword overridable (in VB.NET), though if we leave out specifying the overridable keyword, the member is overridable by default.

    An override method overrides an inherited virtual method with the same signature. Whereas a virtual method declaration introduces a new method, an override method declaration specializes an existing inherited virtual method by providing a new implementation of the method.


This thread is locked for new responses. Please post your comments and questions as a separate thread.
If required, refer to the URL of this page in your new post.