Bài 1: Giới thiệu về Trình quản lý quảng cáo
Bài Giảng C#: Tính Kế Thừa (Inheritance)
1. Tính Kế Thừa Là Gì?
Tính kế thừa (Inheritance) là một trong bốn tính chất quan trọng của lập trình hướng đối tượng (OOP). Nó cho phép một lớp (lớp con) kế thừa các thuộc tính và phương thức từ một lớp khác (lớp cha), giúp tái sử dụng mã nguồn và mở rộng chức năng mà không cần viết lại.
2. Cách Kế Thừa Lớp Trong C#
Trong C#, để kế thừa một lớp, sử dụng dấu : sau tên lớp con, theo cú pháp sau:
pulic class LopCha
{
// Thành phần của lớp cha
}
pulic class LopCon : LopCha
{
// Lớp con kế thừa từ lớp cha
}
Ví dụ cụ thể:
using System;
pulic class DongVat
{
public string Ten;
public void An()
{
Console.WriteLine(Ten + " đang ăn...");
}
}
class Cho : DongVat
{
public void Sua()
{
Console.WriteLine(Ten + " đang sủa: Gâu gâu!");
}
}
class Program
{
static void Main()
{
Cho conCho = new Cho();
conCho.Ten = "Cún Con";
conCho.An(); // Gọi phương thức từ lớp cha
conCho.Sua(); // Gọi phương thức từ lớp con
}
}
3. Sử Dụng base Để Gọi Thành Phần Của Lớp Cha
Từ khóa base trong C# được sử dụng để:
- Gọi constructor của lớp cha.
- Gọi phương thức hoặc thuộc tính của lớp cha.
Ví dụ:
pulic class DongVat
{
public string Ten;
public DongVat(string ten)
{
Ten = ten;
}
public void DiChuyen()
{
Console.WriteLine(Ten + " đang di chuyển...");
}
}
pulic class Meo : DongVat
{
public Meo(string ten) : base(ten) // Gọi constructor của lớp cha
{
}
public void Keu()
{
Console.WriteLine(Ten + " đang kêu: Meo meo!");
}
}
class Program
{
static void Main()
{
Meo conMeo = new Meo("Miu");
conMeo.DiChuyen(); // Gọi phương thức từ lớp cha
conMeo.Keu(); // Gọi phương thức từ lớp con
}
}
4. Sử Dụng virtual và override
Trong kế thừa, lớp con có thể ghi đè (override) phương thức của lớp cha bằng cách sử dụng từ khóa virtual (trong lớp cha) và override (trong lớp con).
Ví dụ:
pulic class DongVat
{
public string Ten;
public virtual void PhatAm()
{
Console.WriteLine("Âm thanh của động vật...");
}
}
pulic class Cho : DongVat
{
public override void PhatAm()
{
Console.WriteLine(Ten + " sủa: Gâu gâu!");
}
}
class Program
{
static void Main()
{
Cho conCho = new Cho { Ten = "Cún Con" };
conCho.PhatAm(); // Phương thức bị ghi đè
}
}
5. Tổng Kết
- Kế thừa giúp tái sử dụng mã và mở rộng chức năng dễ dàng.
- Dùng từ khóa
baseđể gọi thành phần từ lớp cha. - Dùng
virtualvàoverrideđể ghi đè phương thức của lớp cha trong lớp con. - Giúp tổ chức mã nguồn rõ ràng hơn và tránh trùng lặp code.
Hãy thử áp dụng tính kế thừa vào chương trình của bạn để thấy lợi ích của nó!
1. YÊU CẦU
Hãy xây dựng một chương trình quản lý nhân sự với các lớp kế thừa như sau:
-
Lớp
NhanVien(Lớp cha)- Thuộc tính:
HoTen(chuỗi)Tuoi(số nguyên)LuongCoBan(số thực)
- Phương thức:
- Hàm khởi tạo để gán giá trị
TinhLuong()(ảo): Trả về lương cơ bảnHienThiThongTin(): Hiển thị thông tin nhân viên
- Thuộc tính:
-
Lớp
NhanVienVanPhong(Lớp con kế thừaNhanVien)- Thuộc tính bổ sung:
SoNgayLamViec(số nguyên)
- Ghi đè phương thức
TinhLuong():- Lương =
LuongCoBan + SoNgayLamViec * 100_000
- Lương =
- Thuộc tính bổ sung:
-
Lớp
NhanVienSanXuat(Lớp con kế thừaNhanVien)- Thuộc tính bổ sung:
SoSanPham(số nguyên)
- Ghi đè phương thức
TinhLuong():- Lương =
LuongCoBan + SoSanPham * 50_000
- Lương =
- Thuộc tính bổ sung:
Yêu cầu triển khai: Main
- Viết chương trình nhập thông tin của nhân viên văn phòng và nhân viên sản xuất.
- Hiển thị thông tin nhân viên và lương của họ.
2. NỘP BÀI: File cs hoặc code trực tiếp trên phần biên soạn