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);
}
}
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'