Difference between Method Overriding and Method Hiding
Method Overriding :
public class BaseClass
{
public virtual void print()
{
console.WriteLine("Base Class Print Method");
}
}
Public class DerivedClass : BaseClass
{
public Override void print()
{
console.WriteLine("Derived Class Print Method");
}
}
Public Class program
{
public static void Main()
{
BaseClass b=new DerivedClass();
b.print();
}
}
output: Derived Class Print Method
Note: In method overriding a base class reference variable pointing to the child class object,
will invoke overridden method in the child class.
Method Hiding:
public class BaseClass
{
public void print()
{
console.WriteLine("Base Class Print Method");
}
}
Public class DerivedClass : BaseClass
{
public new void print()
{
console.WriteLine("Derived Class Print Method");
}
}
Public Class program
{
public static void Main()
{
BaseClass b=new DerivedClass();
b.print();
}
}
output: Base Class Print Method
Note:
In method hiding a base class reference variable pointing to the child class object,
will invoke the hidden method in the Base class.
-- To Hide the base class members from derived class using new keyword
how to invoke hidden base class member from derived class?
there are three ways to invoke hidden base class member from derived class
1.using base keyword
public class BaseClass
{
public void print()
{
console.WriteLine("Base Class Print Method");
}
}
Public class DerivedClass : BaseClass
{
public new void print()
{
base.print();
}
}
Public Class program
{
public static void Main()
{
DerivedClass d=new DerivedClass();
d.print();
}
}
output: Base Class Print Method
2.cast child type to parent Type and invoke the hidden member
public class BaseClass
{
public void print()
{
console.WriteLine("Base Class Print Method");
}
}
Public class DerivedClass : BaseClass
{
public new void print()
{
base.print();
}
}
Public Class program
{
public static void Main()
{
DerivedClass d=new DerivedClass();
var b=(BaseClass)d;
b.print();
}
}
output: Base Class Print Method
3. BaseClass b=new DerivedClass();
b.print();
see this example in acove
No comments:
Post a Comment