×

Hiểu Về Kế Thừa Trong C# Khái Niệm và Ứng Dụng

Kế thừa (Inheritance) trong C# là một tính năng của lập trình hướng đối tượng (OOP) cho phép một lớp (class) kế thừa các thuộc tính và phương thức của một lớp khác. Lớp kế thừa được gọi là lớp con (derived class hoặc subclass), và lớp mà nó kế thừa được gọi là lớp cha (base class hoặc superclass). Kế thừa giúp tái sử dụng mã, dễ dàng mở rộng và duy trì mã nguồn.

1. Khái niệm Kế thừa

Trong C#, một lớp con có thể kế thừa từ một lớp cha bằng cách sử dụng dấu hai chấm (:) theo sau là tên của lớp cha. Lớp con sẽ kế thừa tất cả các thuộc tính và phương thức của lớp cha, ngoại trừ các thành viên được khai báo với từ khóa private.

2. Ví dụ về Kế thừa

Lớp cha (Base Class)

public class Animal
{
    public string Name { get; set; }

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

    public void Sleep()
    {
        Console.WriteLine("Sleeping...");
    }
}

Lớp con (Derived Class)

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

Sử dụng lớp con

class Program
{
    static void Main(string[] args)
    {
        Dog dog = new Dog();
        dog.Name = "Buddy";
        dog.Eat();   // Kế thừa từ Animal
        dog.Sleep(); // Kế thừa từ Animal
        dog.Bark();  // Phương thức riêng của Dog

        Console.WriteLine($"Dog's name: {dog.Name}");
    }
}

Trong ví dụ này, lớp Dog kế thừa các thuộc tính và phương thức từ lớp Animal. Điều này có nghĩa là đối tượng Dog có thể sử dụng các phương thức EatSleep từ lớp Animal cũng như phương thức Bark của riêng nó.

3. Từ khóa base

Từ khóa base trong C# được sử dụng trong lớp con để truy cập các thành viên của lớp cha, bao gồm cả các phương thức và thuộc tính. Nó thường được sử dụng trong các constructor để gọi constructor của lớp cha.

Ví dụ sử dụng base

public class Animal
{
    public string Name { get; set; }

    public Animal(string name)
    {
        Name = name;
    }

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

public class Dog : Animal
{
    public Dog(string name) : base(name)
    {
    }

    public void Bark()
    {
        Console.WriteLine("Barking...");
    }
}

4. Ghi đè phương thức (Method Overriding)

Ghi đè phương thức cho phép lớp con cung cấp cách triển khai riêng cho một phương thức đã được khai báo trong lớp cha. Để ghi đè phương thức, lớp cha phải đánh dấu phương thức đó với từ khóa virtual, và lớp con phải sử dụng từ khóa override.

Ví dụ về ghi đè phương thức

public class Animal
{
    public virtual void MakeSound()
    {
        Console.WriteLine("Animal makes a sound.");
    }
}

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

5. Lợi ích của Kế thừa

  • Tái sử dụng mã: Giảm thiểu mã trùng lặp bằng cách sử dụng lại các thuộc tính và phương thức từ lớp cha.
  • Dễ bảo trì: Thay đổi trong lớp cha tự động áp dụng cho các lớp con, giúp duy trì mã dễ dàng hơn.
  • Mở rộng chức năng: Lớp con có thể thêm các thuộc tính và phương thức mới hoặc ghi đè các phương thức hiện có để cung cấp chức năng cụ thể hơn.

Tổng kết

Kế thừa là một tính năng mạnh mẽ của lập trình hướng đối tượng trong C#, cho phép các lớp con kế thừa và mở rộng các thành phần của lớp cha. Nó giúp tái sử dụng mã, cải thiện tính bảo trì và mở rộng chức năng của các lớp trong ứng dụng của bạn.

Comments