abstract là một từ khóa trong c# thường sử dụng trước các hàm(function) hoặc lớp (class) để thể hiện tính trừu tượng hóa dữ liệu. Nói một cách nôm na và dễ hiểu không trừu tượng thì nó thường dùng để định nghĩa tên hàm hoặc lớp nhưng chưa cần định nghĩa chi tiết hàm hoặc lớp đó. Khi nào chúng ta sử dụng hàm hoặc lớp đó thì chúng ta kế thừa và định nghĩa. Chi tiết hơn thì như sau:
Từ khóa abstract
được sử dụng cho các class và method:
- abstract class: là lớp bị hạn chế, không thể dùng để tạo đối tượng (để truy cập được thì phải kế thừa từ lớp khác).
- abstract method: chỉ có thể được sử dụng trong một lớp trừu tượng và nó không có phần thân(chưa định nghĩa thân hàm). Phần thân được định nghĩa bởi lớp dẫn xuất (lớp con, kế thừa từ class chứa hàm abstract). Một lớp trừu tượng có thể có cả phương thức trừu tượng và phương thức thông thường
abstract class DongVat
{
public abstract void keu();
public void sleep()
{
Console.WriteLine("Zzz");
}
}
Cách sử dụng sai
DongVat myObj = new DongVat(); // sẽ sinh ra lỗi không tạo được đối tượng
Cách sử dụng đúng
class ConCho: DongVat
{
public override void keu()
{
Console.WriteLine("Con cho keu: gau gau");
}
}