Tính lương nhân viên bằng đa hình trong C#
Trong bài học này, bạn sẽ tính tổng lương cho nhiều loại nhân viên khác nhau thông qua một class cơ sở trừu tượng.
Giới thiệu
Mỗi loại nhân viên có cách tính lương riêng: nhân viên hưởng lương cố định và nhân viên làm theo giờ. Bằng cách định nghĩa một class cơ sở trừu tượng với phương thức Pay(), phần code tính lương có thể xử lý mọi nhân viên theo cùng một cách.
Class Salaried trả về lương cố định, còn Hourly tính lương bằng đơn giá nhân số giờ làm việc. Mảng staff có kiểu chung Employee, nhưng khi gọi employee.Pay(), chương trình tự chọn đúng cách tính của từng loại nhân viên. Tổng lương là 1000 + 20 × 10 = 1200.
Ví dụ C# chạy được
using System;
using System.Linq;
abstract class Employee { public abstract decimal Pay(); }
class Salaried(decimal salary) : Employee { public override decimal Pay() => salary; }
class Hourly(decimal rate, int hours) : Employee { public override decimal Pay() => rate * hours; }
class Program
{
static void Main()
{
Employee[] staff = { new Salaried(1000), new Hourly(20, 10) };
Console.WriteLine(staff.Sum(employee => employee.Pay()));
}
}
1200Luyện tập với trình gỡ lỗi
Luyện tập với thử thách
Áp dụng kiến thức của bài học này để giải một bài toán thực tế. Mỗi thử thách chạy ngay trên trình duyệt, có kiểm thử tức thì và AI nhận xét.
Tất cả thử thách