using System; using System.Data; using System.Text; using System.Windows.Forms; namespace BaseDerive { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { BaseClass b = new BaseClass(); b.func1(); DeriveClass d = new DeriveClass(); d.func1(); //Calls Base class function 1 as new keyword is used. BaseClass bd = new DeriveClass(); bd.func1(); //Calls Derived class function 2 as override keyword is used. BaseClass bd2 = new DeriveClass(); bd2.func2(); } } public class BaseClass { public virtual void func1() { MessageBox.Show("Base Class function 1."); } public virtual void func2() { MessageBox.Show("Base Class function 2."); } public void func3() { MessageBox.Show("Base Class function 3."); } } public class DeriveClass : BaseClass { public new void func1() { MessageBox.Show("Derieve Class fuction 1 used new keyword"); } public override void func2() { MessageBox.Show("Derieve Class fuction 2 used override keyword"); } public void func3() { MessageBox.Show("Derieve Class fuction 3 used override keyword"); } } }
This is a window application so all the code for calling the function through objects is written in Form_Load event.
As seen in above code, I have declared 2 classes. One works as a Base class and second is a derieve class derived from base class.
Now the difference is
new: hides the base class function.
Override: overrides the base class function.
BaseClass objB = new DeriveClass();
If we create object like above notation and make a call to any function which exists in base class and derive class both, then it will always make a call to function of base class. If we have overidden the method in derive class then it wlll call the derive class function.
For example…
objB.func1(); //Calls the base class function. (In case of new keyword) objB.func2(); //Calls the derive class function. (Override) objB.func3(); //Calls the base class function.(Same prototype in both the class.)
Note:
// This will throw a compile time error. (Casting is required.)
DeriveClass objB = new BaseClass();
//This will throw run time error. (Unable to cast)
DeriveClass objB = (DeriveClass) new BaseClass();
No comments:
Post a Comment