}
Rất đơn giản đúng không, cũng như chúng ta coded rằng:
publicclassGame1 : Microsoft.Xna.Framework.Game
Có nghĩa là game của chúng ta đã kế thừa từ lớp Microsoft.Xna.Framework.Game Sẵn có của XNA, Game1 thừa hưởng mọi thuộc tính, hàm, phương thức... của mẹ nó là XNA, Game1 thừa hưởng mọi thuộc tính, hàm, phương thức... của mẹ nó là
Microsoft.Xna.Framework.Game.
Tính kế thừa rất tiện lợi cho những dự án lớn, nó làm giảm khối lượng công việc của
programmer giúp chương trình mạch lạc, đơn giản hơn, dễ debug và kiểm soát. Nói chay khó hiểu mình nếu thử VD này. Bạn có 3 chủng loại monster khác nhau trong game của bạn, chúng hiểu mình nếu thử VD này. Bạn có 3 chủng loại monster khác nhau trong game của bạn, chúng đều biết chạy đến chỗ bạn, tấn công và bỏ chạy khi sắp die, thế nếu chúng ta tạo 1 lớp chung cho 3 chủng monster trên gọi là Monster, sau đó tạo riêng cho từng con mỗi con một class riêng kế thừa từ lớp Monster. Chúng ta chỉ cần code cho con 1 là melee, con 2 là range, con 3 là boss có skill chưởng chả hạn, khi có lỗi, cũng dễ khoanh vùng mà debug và chương trình cũng gọn hơn rất nhiều.
Với VD nêu trên, lớp Monster sẽ đc khai báo như sau:
publicabstractclassMonster {
}
Cái chữ abstract chắc các bạn đã biết, nó đánh dấu lớp ảo, tức là lớp làm nền cho các lớp khác kế thừa, lớp ảo không tạo ra đối tượng khi chạy chương trình, nếu cố tình làm điều đó, C# sẽ báo thừa, lớp ảo không tạo ra đối tượng khi chạy chương trình, nếu cố tình làm điều đó, C# sẽ báo lỗi.
Khi mình cần code class cho boss, code sẽ như sau:
Public class Boss:Monster { {
}
} chiến đến cùng, khi đó bạn sẽ phải viết lại hàm bỏ chạy của monster: