So sánh interface và abstract class c năm 2024
Thì thuộc tính chung của chúng nó là tên loại động vật (chó, mèo,..), thuộc tính có chân, tiếng kêu … Thay vì mỗi con vật ta phải khởi tạo mỗi class riêng thì ta sẽ tạo một class có thuộc tính loài chung có tên Animal.
Ta tạo ra một class dành riêng cho
6 (miễn là chó và có rất nhiều loại chó sẽ khởi tạo từ class này). Nó là loại chó và được kế thừa từ class Animal, vì nó có thuộc tính của class Animal.
Tương tự
6 thì ta cũng tạo ra một class dành cho loại gà ( và cũng có rất nhiều loại gà) và dĩ nhiên nó sẽ kế thừa thuộc tính của Animal.
Và mỗi khi sử dụng thì ta lại khởi tạo đối tượng thôi. Ah, tới đây thì các bạn sẽ nói: “Ủa đơn giản thôi! Thì chỉ cần tạo riêng mỗi loại một class là xong mà?” Ối bạn ới….. Đúng là nếu đơn giản vậy thì chỉ cần tạo class con chó, class con gà mỗi thứ một class là xong. Những thứ chúng ta cần ứng dụng là một cái gì đó to lớn hơn, vào các Project lớn. Và khi một Project lớn, cái chúng ta cần khi lập trình, cũng như người khác kế thừa lại code của chúng ta là cái nhìn
8 Bạn tưởng tượng bạn tạo hàng trăm, hàng ngàn đối tượng, mỗi đối tượng một tên, khi nhìn lại chúng ta khó có thể hình dung đối tượng này có kiểu dữ liệu như thế nào? Nhưng khi áp dụng
0 nó sẽ có thêm phần gọi phía trước khởi tạo (ví dụ vậy đó) giúp ta dễ hình dung hơn. Bây giờ chúng ta nhìn vào chương trình chính nhé.
Ta thấy, trước khi khởi tạo đối tượng thì sẽ thấy đối tượng có kiểu Animal (động vật), được khởi tạo cho loài chó ( loài gà). Nhìn rất trực quan, dễ hiểu code. Kết quả chương trình:
Tuy nhiên, ở method tiếng kêu thì cả 4 lần gọi nó hiện ra chung chung. Con nào cũng kêu. Giải pháp ở đây là
0 bên trong
0. Chúng ta sẽ chỉnh lại code của Class Animal như sau: Thêm từ khóa
2 vào method TiengKeu().
Từ khóa
2 cho phép chúng ta
4 method của lớp cha (Animal), hoặc là
5 (ghi đè) lại method mới ở class con (con chó, con gà). Như class ConCho chúng ta đã
5 method TiengKeu() của lớp Animal bằng tiếng kêu riêng của loài chó.
Kết quả chương trình:
Vậy là method TiengKeu() của class ConCho sau khi được
5 lên lớp cha nó đã có tiếng kêu riêng. Con chó kêu: Woof..Woof.. Bây giờ chúng ta qua Class ConGa, như đã nói ở trên khi method TiengKeu() của class Animal là thuộc tính
2, thì các lớp kế thừa nó
9 hoặc
0. Ở kết quả trên, do chúng ta không tiến hành
5 cho method TiengKeu() của class ConGa nên nó vẫn sử dụng phương thức gọi của lớp cha “Con nào cũng kêu.” Bây giờ, chúng ta chỉnh code một tí. Vừa sử dụng lại method TiengKeu() của class cha Animal và thêm
5 (ghi đè) thêm thuộc tính mới cho method TiengKeu() ở class con kế thừa là class ConGa.
Và kết quả chương trình:
Chúng ta thấy từ khóa
3, nó là từ khóa để cho phép gọi lại method của lớp cha class Animal. Và kết quả là vừa in ra thuộc tính của class cha và in ra thuộc tính của lớp kế thừa. Con nào cũng kêu. Con gà kêu: ò ó o… Một số lưu ý với Abstract class:Không thể tạo đối tượng cho Abstract class (nó sinh ra là để class khác kế thừa). Một Abstract class phải có tối thiểu một Abstract method. Một Abstract method không thể có nội dung bên trong (có thể có phần khai báo như ví dụ method abstract public void NameAnimal(string name);). |