Chủ Nhật , 25 Tháng Mười 2020
Trang chủ / HỌC LẬP TRÌNH / C# [C Sharp] / Bài viết mới nhất [Học lập trình] – C# – [Bài 27] (C#) – Thừa kế trong C#

Bài viết mới nhất [Học lập trình] – C# – [Bài 27] (C#) – Thừa kế trong C#

Thừa kế trong C#


Thừa kế (Lớp dẫn xuất và lớp cơ sở)

Trong C#, có thể kế thừa các trường và các phương thức từ lớp này sang lớp khác. Chúng ta nhóm khái niệm thừa kế vào hai nhóm:

  • Derived Class (lớp con hay lớp dẫn xuất) – lớp thừa kế từ lớp khác
  • Base Class (lớp cha – lớp cơ sở) – lớp được lớp con thừa kế

Để thừa kế từ một lớp, chúng ta sử dụng biểu tượng dấu hai chấm (:).

Trong ví dụ dưới, lớp Car (lớp con) thừa kế các trường và các phương thức từ lớp Vehicle (lớp cha):

Ví dụ

class Vehicle  // base class (parent) 
{
  public string brand = "Ford";  // Vehicle field
  public void honk()             // Vehicle method 
  {                    
    Console.WriteLine("Tuut, tuut!");
  }
}

class Car : Vehicle  // derived class (child)
{
  public string modelName = "Mustang";  // Car field
}

class Program
{
  static void Main(string[] args)
  {
    // Create a myCar object
    Car myCar = new Car();

    // Call the honk() method (From the Vehicle class) on the myCar object
    myCar.honk();

    // Display the value of the brand field (from the Vehicle class) and the value of the modelName from the Car class
    Console.WriteLine(myCar.brand + " " + myCar.modelName);
  }
}

Chạy ví dụ »

Tại sao và khi nào chúng ta sử dụng thừa kế?

– Thừa kế hữu dụng trong việc tái sử dụng mã nguồn: tái sử dụng các trường các phương thức của một lớp đã tồn tại khi chúng ta tạo một lớp mới.

Mẹo: Trong bài tiếp, Polymorphism – Đa thừa kế, chúng ta sẽ sử dụng các phương thức được thừa kế để thực hiện các công việc khác nhau.


Từ khóa sealed

Nếu chúng ta không muốn lớp khác được kế thừa từ một lớp, sử dụng từ khóa sealed:

Nếu thử truy cập vào một lớp sealed, C# sẽ tạo ra một lỗi:

sealed class Vehicle 
{
  ...
}

class Car : Vehicle 
{
  ...
}

Thông điệp lỗi sẽ như sau:

'Car': cannot derive from sealed type 'Vehicle'

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *