Flutter tutorial – 2.8 Lập trình hướng đối tượng trong ngôn ngữ Dart (Phần II)

Trong bài trước của Flutter tutorial, Báo Flutter đã gửi đến các bạn về hai đặc tính của lập trình hướng đối tượng trong ngôn ngữ Dart là tính đóng gói và tính trừu tượng. Trong bài viết này Báo Flutter gửi tiếp đến các bạn hai đặc tính còn lại là tính kế thừa và tính đa hình.

* Tính kế thừa

Trong một phần mềm hay chương trình, được cấu tạo bởi nhiều lớp khác nhau cùng các thành phần khác.

Mối quan hệ giữa các lớp, có mối quan hệ kế thừa, gồm lớp cha ( super class )và các lớp con(sub class), Các lớp con đó lại có thể là lớp cha của các lớp khác.

Mục đích của kế thừa là tái sử dụng.
Lớp con có thể sở hữu các thuộc tính và phương thức public của lớp cha nhưng không được sở hữu các thuộc tính hay phương thức private và các hàm constructor.

Biểu diễn kế thừa trong Dart cũng tương tự như trong Java : dùng extends

ví dụ:

Lớp trừu tượng
Lớp trừu tượng trong ngôn ngữ Dart là lớp có hành vi chưa được xác định rõ. Cách nhận biết là có từ khoá abstract ở trước class :
Ví dụ:

– Ghi đè phương thức : Overriding – là trườnh hợp khi lớp con muốn sửa phương thức của lớp cha. Đặc biệt nếu lớp cha có những phương thức trừu tượng thì việc ghi đè là bắt buộc.

– Từ khoá super trong kế thừa: Dùng để truy cập đến các biến, hàm ( public) và cả constructor của lớp cha. Dưới đây là một ví dụ :

Kết quả:

Trong ngôn ngữ Dart, không dùng từ khoá interface hay không dùng phương thức có từ khoá abstract ở phía trước, ví dụ :

* Tính đa hình
Tính đa hình trong ngôn ngữ Dart cũng có ý nghĩa giống như trong các ngôn ngữ khác. Cùng biểu diễn một hành vi nhưng từng lớp có cách biểu diễn khác nhau.

Đoạn code sau là một ví dụ:

Như vậy, Cùng một hành vi là Chở, nhưng với các loại xe là các công dụng lại khác nhau – Đó là tính đa hình.

Kết luận: Vậy là Báo Flutter đã giới thiệu đầy đủ về các đặc tính của hướng đối tượng trong ngôn ngữ Dart : tính đóng gói, tính trừu tượng , tính kế thừa và tính đa hình.

Mong các bạn có được nhiều kiến thức từ blog này !

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *