Đầu tiên các bạn Code thì nên nắm rõ các thuộc tính của C# như Abstract; Interface; Class; Method.
Nói chung là nắm mấy khái niệm này thì sau này sẽ dùng rất nhiều, mà nói chung là mình cũng thuộc loại cốt khá nhiều rồi loạng quạng quên xừ nó khái niệm luôn :)). Căng cò thật sự luôn. Tiện làm bài cho các bạn thì mình cũng có thời gian đọc lại luôn.
Nói riêng thì mình tổng hợp bài viết từ các trang khác về đây thôi, và xin phép các bạn mình dẫn nguồn đầy đủ nhé
1. Abstract class là gì?
– Abstract class hay còn gọi là lớp trừu tượng. Nếu dùng từ trừu tượng (dịch nghĩa của từ abstract) thì sẽ gây cho bạn khó hiểu, có gì đó mơ hồ khi mới tiếp cận, do đó từ bên dưới mình sẽ gọi lớp trừu tượng là abstract class, phương thức trừu tượng là abstract method. Bạn cứ hiểu nó cũng chỉ là một tên gọi class hay phương thức như bình thường thôi, chủ yếu là bạn hiểu được cách dùng của nó.
– Abstract class được xem như là một lớp cha(base class) cho tất cả các lớp con(derived class) có cùng bản chất (kiểu, loại, nhiệm vụ của lớp).
Ví dụ: chúng ta có một lớp Animal gồm 2 phương thức:
Eat() {
// Thức ăn "Động vật ăn cỏ."
}
AnimalSound() {
// Tiếng kêu "Quạ Quạ."
}
– Và chúng ta có 3 lớp Cow, Cat, Bird kế thừa từ lớp Animal, tuy nhiên Cow, Cat, Bird thì:
・ Không cùng ăn một loại thức ăn.
・ Và tiếng kêu cũng không giống nhau.
– Do đó mà các phương thức Eat(), AnimalSound() cần phải khác nhau cho từng loại động vật, trong khi chúng cùng được kế thừa từ một lớp duy nhất là Animal.
Nguồn minhhn.com (http://minhhn.com/lap-trinh-c-sharp/lop-truu-tuong-abstract-class-trong-csharp/)
Để hiểu rõ hơn thì thế này
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"); } }
Nguồn: https://www.pydev.vn/d/29-abstract-trong-c-la-gi