C# - Inheritance

Inheritance in C#

Introduction to Inheritance in C#

C# Inheritance is one of the most important pillars of Object-Oriented Programming (OOP). Inheritance in C# allows a class to acquire the properties, methods, and behaviors of another class. This promotes code reusability, scalability, and maintainability in modern software development.

In simple terms, inheritance enables you to create a new class (derived class) from an existing class (base class). The derived class automatically gets access to the public and protected members of the base class. This powerful feature helps developers build structured, modular, and reusable C# applications.

What is Inheritance in C#?

Inheritance in C# is a mechanism where one class inherits the members of another class. The class that provides the inherited members is called the Base Class (or Parent Class), and the class that inherits those members is called the Derived Class (or Child Class).

Inheritance supports the β€œis-a” relationship. For example, if Dog inherits from Animal, then Dog is an Animal.

Basic Syntax of C# Inheritance


using System;

class Animal
{
    public void Eat()
    {
        Console.WriteLine("Animal is eating");
    }
}

class Dog : Animal
{
    public void Bark()
    {
        Console.WriteLine("Dog is barking");
    }
}

class Program
{
    static void Main()
    {
        Dog myDog = new Dog();
        myDog.Eat();
        myDog.Bark();
    }
}

In the above example:

  • Animal is the Base Class
  • Dog is the Derived Class
  • Dog inherits the Eat() method from Animal

Why Use Inheritance in C#?

Inheritance provides several advantages in C# application development:

1. Code Reusability

Instead of rewriting common functionality in multiple classes, you define it once in a base class and reuse it in derived classes.

2. Maintainability

Changes made in the base class automatically reflect in derived classes, reducing redundancy and errors.

3. Extensibility

New features can be added by extending existing classes without modifying original code.

4. Polymorphism Support

Inheritance enables runtime polymorphism using virtual and override keywords.

Types of Inheritance in C#

C# supports different types of inheritance:

1. Single Inheritance

A derived class inherits from one base class.


class Parent
{
    public void Display()
    {
        Console.WriteLine("Parent Class");
    }
}

class Child : Parent
{
}

2. Multilevel Inheritance

A class inherits from a derived class.


class GrandParent
{
    public void Show()
    {
        Console.WriteLine("GrandParent Class");
    }
}

class Parent : GrandParent
{
}

class Child : Parent
{
}

3. Hierarchical Inheritance

Multiple classes inherit from one base class.


class Animal
{
    public void Eat()
    {
        Console.WriteLine("Eating");
    }
}

class Dog : Animal
{
}

class Cat : Animal
{
}

4. Multiple Inheritance (Through Interfaces)

C# does not support multiple inheritance with classes, but it supports multiple inheritance through interfaces.


interface IWalk
{
    void Walk();
}

interface IRun
{
    void Run();
}

class Person : IWalk, IRun
{
    public void Walk()
    {
        Console.WriteLine("Walking");
    }

    public void Run()
    {
        Console.WriteLine("Running");
    }
}

Access Modifiers in C# Inheritance

Access modifiers control visibility of base class members in derived classes.

1. Public

Accessible everywhere.

2. Protected

Accessible within the class and derived classes.

3. Private

Not accessible in derived classes.

4. Internal

Accessible within the same assembly.

5. Protected Internal

Accessible within assembly or derived classes.

Base Keyword in C#

The base keyword is used to access members of the base class from a derived class.


class Animal
{
    public string name = "Animal";

    public void Display()
    {
        Console.WriteLine("Base class method");
    }
}

class Dog : Animal
{
    public void Show()
    {
        Console.WriteLine(base.name);
        base.Display();
    }
}

Method Overriding in C#

Method overriding allows a derived class to provide a specific implementation of a method already defined in the base class.

Virtual and Override Keywords


class Animal
{
    public virtual void Sound()
    {
        Console.WriteLine("Animal sound");
    }
}

class Dog : Animal
{
    public override void Sound()
    {
        Console.WriteLine("Dog barks");
    }
}

The virtual keyword allows a method to be overridden, and the override keyword provides a new implementation in the derived class.

Sealed Keyword in C#

The sealed keyword prevents further inheritance of a class or overriding of a method.


sealed class FinalClass
{
}

Abstract Classes and Inheritance

An abstract class cannot be instantiated and may contain abstract methods that must be implemented by derived classes.


abstract class Shape
{
    public abstract void Draw();
}

class Circle : Shape
{
    public override void Draw()
    {
        Console.WriteLine("Drawing Circle");
    }
}

Constructor Inheritance in C#

Constructors are not inherited, but derived class constructors can call base class constructors using the base keyword.


class Person
{
    public Person(string name)
    {
        Console.WriteLine("Name: " + name);
    }
}

class Student : Person
{
    public Student(string name) : base(name)
    {
        Console.WriteLine("Student Constructor");
    }
}

Polymorphism and Inheritance in C#

Inheritance enables runtime polymorphism in C#. When a base class reference points to a derived class object, overridden methods are executed.


Animal obj = new Dog();
obj.Sound();

This concept is essential in large-scale C# application development.

Real-World Example of C# Inheritance


class Vehicle
{
    public virtual void Start()
    {
        Console.WriteLine("Vehicle Starting");
    }
}

class Car : Vehicle
{
    public override void Start()
    {
        Console.WriteLine("Car Starting with Key");
    }
}

class Bike : Vehicle
{
    public override void Start()
    {
        Console.WriteLine("Bike Starting with Kick");
    }
}

This demonstrates runtime polymorphism and method overriding in C#.

Common Mistakes in C# Inheritance

  • Overusing inheritance unnecessarily.
  • Violating Liskov Substitution Principle.
  • Making base classes too complex.
  • Ignoring access modifiers.

C# Inheritance is a powerful feature of Object-Oriented Programming in C#. It enables code reusability, modular design, and runtime polymorphism. By understanding base classes, derived classes, method overriding, abstract classes, and access modifiers, developers can build scalable and maintainable applications.

Mastering inheritance in C# is essential for developing enterprise-level applications, ASP.NET projects, desktop applications, and modern software systems.

logo

C#

Beginner 5 Hours

Inheritance in C#

Introduction to Inheritance in C#

C# Inheritance is one of the most important pillars of Object-Oriented Programming (OOP). Inheritance in C# allows a class to acquire the properties, methods, and behaviors of another class. This promotes code reusability, scalability, and maintainability in modern software development.

In simple terms, inheritance enables you to create a new class (derived class) from an existing class (base class). The derived class automatically gets access to the public and protected members of the base class. This powerful feature helps developers build structured, modular, and reusable C# applications.

What is Inheritance in C#?

Inheritance in C# is a mechanism where one class inherits the members of another class. The class that provides the inherited members is called the Base Class (or Parent Class), and the class that inherits those members is called the Derived Class (or Child Class).

Inheritance supports the “is-a” relationship. For example, if Dog inherits from Animal, then Dog is an Animal.

Basic Syntax of C# Inheritance

using System; class Animal { public void Eat() { Console.WriteLine("Animal is eating"); } } class Dog : Animal { public void Bark() { Console.WriteLine("Dog is barking"); } } class Program { static void Main() { Dog myDog = new Dog(); myDog.Eat(); myDog.Bark(); } }

In the above example:

  • Animal is the Base Class
  • Dog is the Derived Class
  • Dog inherits the Eat() method from Animal

Why Use Inheritance in C#?

Inheritance provides several advantages in C# application development:

1. Code Reusability

Instead of rewriting common functionality in multiple classes, you define it once in a base class and reuse it in derived classes.

2. Maintainability

Changes made in the base class automatically reflect in derived classes, reducing redundancy and errors.

3. Extensibility

New features can be added by extending existing classes without modifying original code.

4. Polymorphism Support

Inheritance enables runtime polymorphism using virtual and override keywords.

Types of Inheritance in C#

C# supports different types of inheritance:

1. Single Inheritance

A derived class inherits from one base class.

class Parent { public void Display() { Console.WriteLine("Parent Class"); } } class Child : Parent { }

2. Multilevel Inheritance

A class inherits from a derived class.

class GrandParent { public void Show() { Console.WriteLine("GrandParent Class"); } } class Parent : GrandParent { } class Child : Parent { }

3. Hierarchical Inheritance

Multiple classes inherit from one base class.

class Animal { public void Eat() { Console.WriteLine("Eating"); } } class Dog : Animal { } class Cat : Animal { }

4. Multiple Inheritance (Through Interfaces)

C# does not support multiple inheritance with classes, but it supports multiple inheritance through interfaces.

interface IWalk { void Walk(); } interface IRun { void Run(); } class Person : IWalk, IRun { public void Walk() { Console.WriteLine("Walking"); } public void Run() { Console.WriteLine("Running"); } }

Access Modifiers in C# Inheritance

Access modifiers control visibility of base class members in derived classes.

1. Public

Accessible everywhere.

2. Protected

Accessible within the class and derived classes.

3. Private

Not accessible in derived classes.

4. Internal

Accessible within the same assembly.

5. Protected Internal

Accessible within assembly or derived classes.

Base Keyword in C#

The base keyword is used to access members of the base class from a derived class.

class Animal { public string name = "Animal"; public void Display() { Console.WriteLine("Base class method"); } } class Dog : Animal { public void Show() { Console.WriteLine(base.name); base.Display(); } }

Method Overriding in C#

Method overriding allows a derived class to provide a specific implementation of a method already defined in the base class.

Virtual and Override Keywords

class Animal { public virtual void Sound() { Console.WriteLine("Animal sound"); } } class Dog : Animal { public override void Sound() { Console.WriteLine("Dog barks"); } }

The virtual keyword allows a method to be overridden, and the override keyword provides a new implementation in the derived class.

Sealed Keyword in C#

The sealed keyword prevents further inheritance of a class or overriding of a method.

sealed class FinalClass { }

Abstract Classes and Inheritance

An abstract class cannot be instantiated and may contain abstract methods that must be implemented by derived classes.

abstract class Shape { public abstract void Draw(); } class Circle : Shape { public override void Draw() { Console.WriteLine("Drawing Circle"); } }

Constructor Inheritance in C#

Constructors are not inherited, but derived class constructors can call base class constructors using the base keyword.

class Person { public Person(string name) { Console.WriteLine("Name: " + name); } } class Student : Person { public Student(string name) : base(name) { Console.WriteLine("Student Constructor"); } }

Polymorphism and Inheritance in C#

Inheritance enables runtime polymorphism in C#. When a base class reference points to a derived class object, overridden methods are executed.

Animal obj = new Dog(); obj.Sound();

This concept is essential in large-scale C# application development.

Real-World Example of C# Inheritance

class Vehicle { public virtual void Start() { Console.WriteLine("Vehicle Starting"); } } class Car : Vehicle { public override void Start() { Console.WriteLine("Car Starting with Key"); } } class Bike : Vehicle { public override void Start() { Console.WriteLine("Bike Starting with Kick"); } }

This demonstrates runtime polymorphism and method overriding in C#.

Common Mistakes in C# Inheritance

  • Overusing inheritance unnecessarily.
  • Violating Liskov Substitution Principle.
  • Making base classes too complex.
  • Ignoring access modifiers.

C# Inheritance is a powerful feature of Object-Oriented Programming in C#. It enables code reusability, modular design, and runtime polymorphism. By understanding base classes, derived classes, method overriding, abstract classes, and access modifiers, developers can build scalable and maintainable applications.

Mastering inheritance in C# is essential for developing enterprise-level applications, ASP.NET projects, desktop applications, and modern software systems.

Related Tutorials

Frequently Asked Questions for C#

C# is much easier to learn than C++. C# is a simpler, high-level-of-abstraction language, while C++ is a low-level language with a higher learning curve.

C# outshines Python when it comes to runtime performance. As a compiled language, C# code is converted to machine code, which can be executed more efficiently by the processor. This results in faster execution times and better performance, especially in resource-intensive tasks.

Python and JavaScript programmers also earn high salaries, ranking #3 and #4 in compensation. 
C# is the highest-paid programming language but has less demand than Python, JavaScript, and Java.

No. Microsoft has invested substantially in ensuring that C# is the dominant language today, spending two billion dollars on marketing and attempting to convince developers to embrace this new platform, which is also based on the.NET foundation.

C# is primarily used on the Windows .NET framework, although it can be applied to an open source platform. This highly versatile programming language is an object-oriented programming language (OOP) and comparably new to the game, yet a reliable crowd pleaser.


You can’t be able to become Master of C# in 3 months since it has many concepts to learn and implement. NOTE: no one can become master in particular programming language. Everyday they introducing new concepts we need to get practice on it which practically somewhat tough.

C-Sharp is one of the most widely used languages for creating system backend.It's because of its incredible features, such as Windows server automation. Apart from that, it's fantastic because it runs codes quite quickly. It can also be used to create CLI applications and game creation.

Easy to learn and use: C# is simpler than Java due to its use of fewer keywords and usually shorter lines of code. Hence, it is easier to learn to code in C# compared to Java. Flexible Data Types: C# provides more flexibility in defining data types than Java.

Four steps of code compilation in C# include : 
  • Source code compilation in managed code.
  • Newly created code is clubbed with assembly code.
  • The Common Language Runtime (CLR) is loaded.
  • Assembly execution is done through CLR.

The C# language is also easy to learn because by learning a small subset of the language you can immediately start to write useful code. More advanced features can be learnt as you become more proficient, but you are not forced to learn them to get up and running. C# is very good at encapsulating complexity.


The decision to opt for C# or Node. js largely hinges on the specific requirements of your project. If you're developing a CPU-intensive, enterprise-level application where stability and comprehensive tooling are crucial, C# might be your best bet.


Among other languages, C# is gaining huge popularity for developing web-based applications. Its core concepts help build an interactive environment and provide functionalities that the dynamic web platform requires. Most aspiring full-stack developers choose this versatile language.

The C# programming language was designed by Anders Hejlsberg from Microsoft in 2000 and was later approved as an international standard by Ecma (ECMA-334) in 2002 and ISO/IEC (ISO/IEC 23270 and 20619) in 2003. Microsoft introduced C# along with .NET Framework and Visual Studio, both of which were closed-source. 

C# outshines Python when it comes to runtime performance. As a compiled language, C# code is converted to machine code, which can be executed more efficiently by the processor. This results in faster execution times and better performance, especially in resource-intensive tasks.

Yes, C# is used by many large organizations, start-ups and beginners alike. It takes some of the useful features of C and adds syntax to save time and effort. Although C# is based on C, you can learn it without any knowledge of C β€” in fact, this course is perfect for those with no coding experience at all!

C# is a very mature language that evolved significantly over the years.
The C# language is one of the top 5 most popular programming languages and .NET is the most loved software development framework in the world.
TIOBE Index predicts C# as 2023 'Language of the Year' close to overtake Java in popularity.

Generally, the C# language is not limited to the Windows operating system. In a sense, however, it is limited to Microsoft software. C# language "belongs" to Microsoft, it is developed by Microsoft and it is Microsoft that provides the runtime environment required for the operation of programs written in C#.

C# (pronounced "C sharp") is called so because the "#" symbol is often referred to as "sharp." The name was chosen by Microsoft when they developed the language. It's a play on words related to musical notation where "C#" represents the musical note C sharp.

Dennis MacAlistair Ritchie (September 9, 1941 – c. October 12, 2011) was an American computer scientist. He created the C programming language and, with long-time colleague Ken Thompson, the Unix operating system and B language.

C# is part of .NET, a free and open source development platform for building apps that run on Windows, macOS, Linux, iOS, and Android. There's an active community answering questions, producing samples, writing tutorials, authoring books, and more.


line

Copyrights © 2024 letsupdateskills All rights reserved