Click here to Skip to main content
Click here to Skip to main content

Abstract classes and methods in C#

By , 15 Jun 2006
 

Introduction

A detailed analysis of Abstract classes and methods in C# with some concrete examples.

The keyword abstract can be used with both classes and methods in C# to declare them as abstract.

The classes, which we can't initialize, are known as abstract classes. They provide only partial implementations. But another class can inherit from an abstract class and can create their instances. You need to mark class members that have no implementation with the abstract modifier. ou also need to label a class containing such members as abstract. A class with abstract members cannot be instantiated with the new operator. You can derive both abstract and non-abstract classes from an abstract base class. Interfaces are implicitly abstract.

They cannot be instantiated, and must be implemented by a non-abstract class. Therefore, you cannot mark interfaces and their members as abstract. You may not combine the abstract modifier with the other inheritance modifier, final. You may not combine either of these inheritance modifiers (abstract and final) with the static modifier.

See the below examples,

Example 1

namespace Abstract
{
 /// <summary>
 /// an abstract class with a non-abstract method
 /// </summary>
 
 abstract class MyAbs
 {
  public void NonAbMethod()
  {
   Console.WriteLine("Non-Abstract Method");
  }
 }

 class MyClass : MyAbs
 {
 }

 class Class1
 {
  /// <summary>
  /// The main entry point for the application.
  /// </summary>
  [STAThread]
  static void Main(string[] args)
  {
   //MyAbs mb = new MyAbs();//not possible to create an instance
   MyClass mc = new MyClass();
   mc.NonAbMethod(); // Displays 'Non-Abstract Method'
  }
 }
}
namespace Abstract2
{
 /// <summary>
 /// An abstract method is a method without any method body.
 /// They are implicitly virtual in C#.
 /// </summary>
 
 abstract class MyAbs
 {
  public void NonAbMethod()
  {
   Console.WriteLine("Non-Abstract Method");
  }
  public abstract void AbMethod(); // An abstract method
 }

 class MyClass : MyAbs//must implement base class abstract methods
 {
  public override void AbMethod()
  {
   Console.WriteLine("Abstarct method");
  } 
 }

 class Class1
 {
  /// <summary>
  /// The main entry point for the application.
  /// </summary>
  [STAThread]
  static void Main(string[] args)
  {
   MyClass mc = new MyClass();
   mc.NonAbMethod();
   mc.AbMethod();
  }
 }
}

For more examples, please see the attachment.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here

About the Author

Manoj Kumar G (IND)
Web Developer
India India
Member
It is an inherent passion for Analytical applications that inspired me to study Physics at the graduate level. During these 3 years I was trained in systematic analysis of physical data and application of Mathematics and in due course of time this passion got transformed into an abiding interest towards automation. This motivated me to go for a higher level application oriented program in Software Development. During the last 6+ years I have enriched myself considerably well by working on various projects which really fine tuned my technical skills. I look forward to put into productive use the knowledge gained / insights developed and at the same time continue to learn enhancing my caliber and pursue a career of excellence, rooted in professional ethics, in the field of Software Development.
 
I have strong background in C#, ASP.NET, ASP, VB6.0 and SQL server 2000.

Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
Hint: For improved responsiveness ensure Javascript is enabled and choose 'Normal' from the Layout dropdown and hit 'Update'.
You must Sign In to use this message board.
Search this forum  
    Spacing  Noise  Layout  Per page   
QuestionSimple one, nice tooo.....memberabindavis213 Oct '12 - 20:04 
GeneralMy vote of 2memberraj23karthik28 Apr '11 - 23:27 
GeneralGive credit where credit is due.memberLarantz18 Oct '06 - 9:33 
Generaloriginally by V.S.Rajeshmemberjo0ls3 Oct '06 - 16:08 
GeneralBroken LinkmemberByteGhost16 Jun '06 - 2:20 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Permalink | Advertise | Privacy | Mobile
Web01 | 2.6.130516.1 | Last Updated 16 Jun 2006
Article Copyright 2006 by Manoj Kumar G (IND)
Everything else Copyright © CodeProject, 1999-2013
Terms of Use
Layout: fixed | fluid