-
13/04/2015 VirtualvsOverridevsNewKeywordsinC#
http://www.csharpcorner.com/UploadFile/2072a9/virtualvsoverridevsnewkeywordsincsharp/
1/7
Ask a Question
READER LEVEL:ARTICLE
This article explains the basic differences between the three
most frequently used andconfusing keywords in C#.
Virtual vs Override vs New Keywords in C#By Abhishek Jaiswal on
Sep 08, 2014
The purpose of writing this article is simple; to provide a
simple and fresh demonstration of the basicdifferences between
these three frequently used and confusing keywords in C# with some
referenceexample. This article is purely for the beginner in
C#.
Outlines
OverviewIntroduction
Virtual KeywordOverride KeywordNew Keyword
Demo ExamplesSample ImplementationNew KeywordVirtual and
Override KeywordMethod Overloading + Riding
Key PointsConclusions
Overview
In this article I'll explain how virtual, override and new
keywords vary by taking some set of examplesrespectively some sort
of functionality.Finally there will be some key points to remember
about all these 3 keywords.
Introduction
This introductory part will provide a brief introduction of all
these 3 keywords. So here they are.
Virtual Keyword
The Virtual keyword is used for generating a virtual path for
its derived classes on implementingmethod overriding. The Virtual
keyword is used within a set with an override keyword. It is used
as:
01. //BaseClass02. classA03. {04. publicvirtualvoidshow()05.
{06. Console.WriteLine("Hello:BaseClass!");07.
Console.ReadLine();08. }09. }
Override Keyword
The Override keyword is used in the derived class of the base
class in order to override the base classmethod. The Override
keyword is used with the virtual keyword, as in:
01. //BaseClass02. classA03. {04. publicvirtualvoidshow()05.
{06. Console.WriteLine("Hello:BaseClass!");07.
Console.ReadLine();08. }09. }10. 11. //DerivedClass12. classB:A13.
{14. publicoverridevoidshow()15. {16.
Console.WriteLine("Hello:DerivedClass!");
01 Lotus Notes to SharePoint MigrationUsing QUEST02 Google+
Authentication in ASP.Net
03 Basics of AngularJS: Part 1
04 Angular JS Filter, Sorting andAnimation Using MVC and WCF
Rest05 How to Retrieve All Users From theGroup in SharePoint Using
REST API06 Creating Dynamic DataGridView UsingHelper Class07
Terminologies in MVC: Part 1(ViewData, ViewBag, TempData)08 MVC
AngularJS and WCF Rest ServiceFor Mind Reader Quiz09 Angular JS
Shopping Cart Using MVCand WCF Rest Service10 Basic Terminology of
SQL Server
View All
TRENDING UP
Follow@csharpcorner 14.6Kfollowers
In Focus MUST READ: Authors How to improve your Writing
Skills
Contribute
Lotus Notes to SharePoint Migration ... C#CornerSearch
10946 5 3
FindusonFacebook
C#Corner
87,746peoplelikeC#Corner.
Like
TECHNOLOGIES ANSWERS BLOGS VIDEOS INTERVIEWS BOOKS NEWS CHAPTERS
CAREER ADVICE JOBS
-
13/04/2015 VirtualvsOverridevsNewKeywordsinC#
http://www.csharpcorner.com/UploadFile/2072a9/virtualvsoverridevsnewkeywordsincsharp/
2/7
17. Console.ReadLine();18. }19. }
New Keyword
The New keyword is also used for polymorphism but in the case of
method overriding. So what doesoverriding means? In simple words we
can say that we are changing what the base class does for
thederived class.
It is implemented as:
01. classA02. {03. publicvoidshow()04. {05.
Console.WriteLine("Hello:BaseClass!");06. Console.ReadLine();07.
}08. }09. 10. classB:A11. {12. publicnewvoidshow()13. {14.
Console.WriteLine("Hello:DerivedClass!");15. Console.ReadLine();16.
}17. }
Demo Example
Sample Implementation
Here's a simple implementation in C# without using any keywords.
Do you think it will run fine, orwill it show a runtime or
compiletime errors? Let's see:
01. usingSystem;02. usingSystem.Collections.Generic;03.
usingSystem.Linq;04. usingSystem.Text;05. 06. namespaceGenerics07.
{08. classA09. {10. publicvoidshow()11. {12.
Console.WriteLine("Hello:BaseClass!");13. Console.ReadLine();14.
}15. }16. 17. classB:A18. {19. publicvoidshow()20. {21.
Console.WriteLine("Hello:DerivedClass!");22. Console.ReadLine();23.
}24. }25. 26. classPolymorphism27. {28. publicstaticvoidMain()29.
{30. Aa1=newA();31. a1.show();32. Bb1=newB();33. b1.show();34.
Aa2=newB();35. a2.show();36. }37. }38. }
Output Window
-
13/04/2015 VirtualvsOverridevsNewKeywordsinC#
http://www.csharpcorner.com/UploadFile/2072a9/virtualvsoverridevsnewkeywordsincsharp/
3/7
It is showing some sort of output. That means there is neither a
runtime nor a compiletime error.But it will definitely show a
warning in Visual Studio. So do you want to know what it is and how
toremove it?
Keep reading and you will go through that.
Warning Message
Here's the warning message that you will get:
Solution
The solution of this problem is already in the warning. Just
read it carefully and you will get that. Yesyou got that right, for
removing that warning we need to use the new keyword.
In the next sample demo example is showing you a simple demo
snippet and implementation of thenew keyword. I hope now you will
be getting why we are using the new keyword in here.
New keyword | Method Overhiding
Here's a simple snippet of method overriding. So just go through
it and guess the output:
01. usingSystem;02. usingSystem.Collections.Generic;03.
usingSystem.Linq;04. usingSystem.Text;05. 06. namespaceGenerics07.
{08. classA09. {10. publicvoidshow()11. {12.
Console.WriteLine("Hello:BaseClass!");13. Console.ReadLine();14.
}15. }16. 17. classB:A18. {19. publicnewvoidshow()20. {21.
Console.WriteLine("Hello:DerivedClass!");22. Console.ReadLine();23.
}24. }25. 26. classPolymorphism27. {28. publicstaticvoidMain()29.
{30. Aa1=newA();31. a1.show();32. Bb1=newB();33. b1.show();34.
Aa2=newB();35. a2.show();36. }37. }38. }
-
13/04/2015 VirtualvsOverridevsNewKeywordsinC#
http://www.csharpcorner.com/UploadFile/2072a9/virtualvsoverridevsnewkeywordsincsharp/
4/7
Output Window
Explanation
The procedure goes something like that:
Virtual and Override Keywords | Method Overriding
This is a simple example of method overriding. Just go through
it and guess the output again andalso try to differentiate between
the previous snippet and this snippet.
01. usingSystem;02. usingSystem.Collections.Generic;03.
usingSystem.Linq;04. usingSystem.Text;05. 06. namespaceGenerics07.
{08. classA09. {10. publicvirtualvoidshow()11. {12.
Console.WriteLine("Hello:BaseClass!");13. Console.ReadLine();14.
}15. }16. 17. classB:A18. {19. publicoverridevoidshow()20. {21.
Console.WriteLine("Hello:DerivedClass!");22. Console.ReadLine();23.
}24. }25. 26. classPolymorphism27. {28. publicstaticvoidMain()29.
{30. Aa1=newA();31. a1.show();32. Bb1=newB();33. b1.show();34.
Aa2=newB();35. a2.show();36. }37. }38. }
Output Window
-
13/04/2015 VirtualvsOverridevsNewKeywordsinC#
http://www.csharpcorner.com/UploadFile/2072a9/virtualvsoverridevsnewkeywordsincsharp/
5/7
Explanation
The flow goes something like that:
Overriding + Hiding | Together
This snippet shows how both of these methods can work together
in a same snippet. So just gothrough this and guess the output.
01. usingSystem;02. usingSystem.Collections.Generic;03.
usingSystem.Linq;04. usingSystem.Text;05. 06. namespaceGenerics07.
{08. classA09. {10. publicvirtualvoidshow()11. {12.
Console.WriteLine("Hello:BaseClass!");13. Console.ReadLine();14.
}15. }16. 17. classB:A18. {19. publicoverridevoidshow()20. {21.
Console.WriteLine("Hello:DerivedClass!");22. Console.ReadLine();23.
}24. }25. 26. classC:B27. {28. publicnewvoidshow()29. {30.
Console.WriteLine("AmHere!");31. Console.ReadLine();32. }33. }34.
35. classPolymorphism36. {37. publicstaticvoidMain()38. {39.
Aa1=newA();40. a1.show();41. Bb1=newB();42. b1.show();43.
Cc1=newC();44. c1.show();45. Aa2=newB();46. a2.show();47.
Aa3=newC();48. a3.show();
-
13/04/2015 VirtualvsOverridevsNewKeywordsinC#
http://www.csharpcorner.com/UploadFile/2072a9/virtualvsoverridevsnewkeywordsincsharp/
6/7
49. Bb3=newC();50. b3.show();51. }52. }53. }
Output Window
Explanation
The flow goes something like that:
Key Points
I am providing some key points about these keywords by taking a
reference of method overloading andoverriding concepts, since these
keywords are used in these mechanisms.
Virtual and Override
Used in polymorphism implementationIncludes same method name and
same paramsUsed in method overridingIt is also called runtime
polymorphismCauses late binding
New
It is also used in polymorphism conceptIncludes the same method
name and different paramsUsed in method overridingIt is compiletime
polymorphismCauses early binding
Conclusion
So did you like it, I hope you so!
Well I tried to provide just a brief sketch of these keywords,
that are very necessary for a beginner in C# aswell as in OOP. If
you have a good understaind of OOP then you can take any
objectoriented language inyour pocket.
So just go through OOP first and then C# and if you are facing
any problem then feel free to ping ormessage me.
Happy coding, Cheers!
-
13/04/2015 VirtualvsOverridevsNewKeywordsinC#
http://www.csharpcorner.com/UploadFile/2072a9/virtualvsoverridevsnewkeywordsincsharp/
7/7
RELATED ARTICLES
Hosted By CBeyond Cloud Services
2015 C# Corner. All contents are copyright of their authors.
Abhishek JaiswalAGeek!
Personal Blog:http://geeksangle.ghost.io/
Rank42
1mReaders
GoldMember
2Times
Virtual Method in C# Difference Between Override and New
KeywordExplained Step-by-Step
Difference Between Override and New Keywordin C#
Var vs Dynamic Keywords in C#Method Overriding in C#
Function Overriding and Its Impact DuringObject
Initialization
Const vs Readonly in C#Look at Load Testing in Visual Studio
2012
Differences Among Method Overriding, MethodHiding (new Keyword)
and Method Shadowingin C#
OOPS Concepts and .NET Part 2: Inheritance,Abstraction, &
Polymorphism
COMMENTS 5of5
Sep 09, 2014
634 1 0 0 0 Post Reply
good explanation
Gyan Parkash
Sep 09, 2014
4 12.8k 4.2m 0 0 Post Reply
Good work Abhishek.
Dinesh Beniwal
Sep 09, 2014
392 268 62.9k 0 0 Post Reply
nice article
Manju lata Yadav
Sep 09, 2014
325 389 130.5k 0 0 Post Reply
Good One....
Divya Sharma
Sep 09, 2014
42 3.6k 1m 0 0 Post Reply
Thank u guys! :)
Abhishek Jaiswal
Type your comment here and press Enter Key....
COMMENT USING
Facebooksocialplugin
Addacomment...
Commentusing...
MVPs MOST VIEWED LEGENDS NOW PRIZES REVIEWS SURVEY
CERTIFICATIONS DOWNLOADS
CONTACT US PRIVACY POLICY TERMS & CONDITIONS SITEMAP REPORT
ABUSE
PHOTOS CODE SNIPPETS CONSULTING TRAINING STUDENTS MEMBERS MEDIA
KIT ABOUT US LINKS IDEAS