Inheritance is a fundamental concept in object-oriented programming (OOP) that allows a class to inherit properties and methods from another class. This promotes code reusability and establishes a natural hierarchy between classes.
Key Concepts
- Base Class (Parent Class): The class whose properties and methods are inherited.
- Derived Class (Child Class): The class that inherits from the base class.
protectedAccess Modifier: Allows a member to be accessible within its class and by derived class instances.baseKeyword: Used to access members of the base class from within a derived class.
Example
Let's start with a simple example to illustrate inheritance in C#.
Base Class
public class Animal
{
public string Name { get; set; }
public int Age { get; set; }
public void Eat()
{
Console.WriteLine($"{Name} is eating.");
}
public void Sleep()
{
Console.WriteLine($"{Name} is sleeping.");
}
}Derived Class
public class Dog : Animal
{
public string Breed { get; set; }
public void Bark()
{
Console.WriteLine($"{Name} is barking.");
}
}Using the Derived Class
class Program
{
static void Main(string[] args)
{
Dog myDog = new Dog
{
Name = "Buddy",
Age = 3,
Breed = "Golden Retriever"
};
myDog.Eat(); // Inherited method
myDog.Sleep(); // Inherited method
myDog.Bark(); // Method from Dog class
Console.WriteLine($"My dog's name is {myDog.Name}, age is {myDog.Age}, and breed is {myDog.Breed}.");
}
}Explanation
- Base Class (
Animal): Contains propertiesNameandAge, and methodsEatandSleep. - Derived Class (
Dog): Inherits properties and methods fromAnimaland adds a new propertyBreedand a new methodBark. - Usage: An instance of
Dogcan access both its own members and the inherited members fromAnimal.
Practical Exercise
Task
Create a base class Vehicle with properties Make, Model, and Year, and methods Start and Stop. Then, create a derived class Car that adds a property NumberOfDoors and a method Honk.
Solution
Base Class
public class Vehicle
{
public string Make { get; set; }
public string Model { get; set; }
public int Year { get; set; }
public void Start()
{
Console.WriteLine($"{Make} {Model} is starting.");
}
public void Stop()
{
Console.WriteLine($"{Make} {Model} is stopping.");
}
}Derived Class
public class Car : Vehicle
{
public int NumberOfDoors { get; set; }
public void Honk()
{
Console.WriteLine($"{Make} {Model} is honking.");
}
}Using the Derived Class
class Program
{
static void Main(string[] args)
{
Car myCar = new Car
{
Make = "Toyota",
Model = "Camry",
Year = 2020,
NumberOfDoors = 4
};
myCar.Start(); // Inherited method
myCar.Honk(); // Method from Car class
myCar.Stop(); // Inherited method
Console.WriteLine($"My car is a {myCar.Year} {myCar.Make} {myCar.Model} with {myCar.NumberOfDoors} doors.");
}
}Common Mistakes
- Forgetting to use the
basekeyword: When you need to call a base class constructor or method from the derived class. - Incorrect access modifiers: Using
privateinstead ofprotectedfor members that need to be accessible in derived classes. - Not initializing base class properties: Ensure that base class properties are properly initialized in the derived class.
Additional Tips
- Use inheritance to promote code reuse and establish a clear hierarchy.
- Avoid deep inheritance hierarchies as they can become difficult to manage and understand.
- Consider using interfaces or composition if inheritance does not fit well with your design.
Conclusion
Inheritance is a powerful feature in C# that allows you to create a new class based on an existing class. This promotes code reuse and helps in creating a clear and maintainable class hierarchy. In the next topic, we will explore polymorphism, which builds on the concept of inheritance to allow for more flexible and dynamic code.
C# Programming Course
Module 1: Introduction to C#
- Introduction to C#
- Setting Up the Development Environment
- Hello World Program
- Basic Syntax and Structure
- Variables and Data Types
Module 2: Control Structures
Module 3: Object-Oriented Programming
- Classes and Objects
- Methods
- Constructors and Destructors
- Inheritance
- Polymorphism
- Encapsulation
- Abstraction
Module 4: Advanced C# Concepts
- Interfaces
- Delegates and Events
- Generics
- Collections
- LINQ (Language Integrated Query)
- Asynchronous Programming
Module 5: Working with Data
Module 6: Advanced Topics
- Reflection
- Attributes
- Dynamic Programming
- Memory Management and Garbage Collection
- Multithreading and Parallel Programming
