Click here to Skip to main content
15,888,401 members
Articles / Programming Languages / C#
Article

Abstract classes and methods in C#

Rate me:
Please Sign up or sign in to vote.
2.46/5 (17 votes)
15 Jun 2006 97.8K   624   29   5
A Detailed Analysis of Abstract classes and methods in C#

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

C#
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'
  }
 }
}
C#
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


Written By
Web Developer
India India
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.

Comments and Discussions

 
QuestionSimple one, nice tooo..... Pin
abindavis213-Oct-12 20:04
abindavis213-Oct-12 20:04 
GeneralMy vote of 2 Pin
karthik cad/cam28-Apr-11 23:27
karthik cad/cam28-Apr-11 23:27 
good!
GeneralGive credit where credit is due. Pin
Larantz18-Oct-06 9:33
Larantz18-Oct-06 9:33 
Generaloriginally by V.S.Rajesh Pin
jo0ls3-Oct-06 16:08
jo0ls3-Oct-06 16:08 
GeneralBroken Link Pin
ByteGhost16-Jun-06 2:20
ByteGhost16-Jun-06 2:20 

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

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.