Mở đầu:
Tất cả mọi người khi làm việc với Dart để phát triển ứng dụng bằng cách sử dụng Flutter framework thường xuyên gặp phải các cách sử dụng khác nhau của cách từ khóa: implements, extends và with. Trong Dart, một lớp có thể kế thừa một lớp khác, tức là Dart có thể tạo một lớp mới từ một lớp hiện có. Chúng ta sử dụng các từ khóa để làm như vậy. Trong bài viết này, chúng ta sẽ xem xét 3 trong số các từ khóa được sử dụng cho cùng một mục đích và so sánh chúng, đó là:
- extends
- with
- implements
1. “extends” keyword.
Trong Dart, từ khóa “extends” thường được sử dụng để thay đổi hành vi của super class bằng cách sử dụng Inheritance. Một lớp mới sử dụng được các thuộc tính và đặc điểm của lớp hiện có khác được gọi là Tính kế thừa. Nói một cách đơn giản hơn, chúng ta có thể nói rằng, chúng ta sử dụng key word extends để tạo Child class và super để chỉ Parent Class. Class có các thuộc tính được kế thừa bởi child class được gọi là Parent Class. Parent Class còn được gọi là base class or super class. Class kế thừa các thuộc tính từ lớp khác được gọi là child class. Child class còn được gọi là derived class, heir class, or subclass. “extends” keyword là tính kế thừa của OOP điển hình. Ngoài ra, chúng ta có thể ghi đè các phương thức.
Chúng ta sử dụng “extends” keyword nếu bạn muốn tạo một phiên bản cụ thể hơn của một lớp. Ví dụ: nếu class Apple extends từ lớp Fruit, điều đó có nghĩa là tất cả các thuộc tính, biến và hàm được định nghĩa trong class Fruit sẽ có sẵn trong class Apple.
Ví dụ:
Output:
2. “implements’ keyword
Interfaces định nghĩa thiết lập của các phương thức trên một đối tượng. Dart không có cú pháp miêu tả interfaces. Mọi class được ngầm định nghĩa là một interfaces chưa tất cả các instance members của class và bất kỳ interfaces nào nó thể hiện. Nếu bạn muốn tạo class A hỗ trợ API của class B mà không kế thừa B, class A nên “implements” interface B. Chúng ta sử dụng keyword “implements” để làm điều này. Đặc biệt, để sử dụng tính trừu tượng toàn phần trong dart, chúng ta sử dụng “abstract” phía trước class và sẽ không thể khởi tạo được nó.
Ví dụ 1:
Output:
Ví dụ 2:
Kết quả:
3. “with” keyword
Mixins là con đường tái sử dụng các phương thức của các class. Mixins được hiểu như abstract class để tái sử dụng trong nhiều class có chức năng và thuộc tính tương tự. Mixins là con đường để trừu tượng và tái sử dụng các phép toán và trạng thái. Nó tương tự việc tái sử dụng chúng ta là để mở rộng class nhưng không có đa kế thừa. Vẫn chỉ tồn tại một superClass.
“with” keyword được sử dụng để bao gồm Mixins. Mixin là một kiểu cấu trúc khác, chỉ được sử dụng với “with” keyword.
Trong Dart, một lớp có thể giữ vai trò như mixin nếu class đó không có constructor. Điều quan trọng cần lưu ý là mixin không bắt buộc hạn chế kiểu cũng như không áp đặt hạn chế sử dụng đối với các phương thức của class.
Ví dụ:
Kết quả:
4. Tổng kết.
Trên đây là một số chia sẻ về sự khác nhau của extends, implemens, và with keywords trong Dart nhằm giúp mọi người sử dụng đúng mục đích. Mong rằng qua bài viết sẽ giúp ích cho các bạn phần nào đó.
Cảm ơn các bạn đã đọc bài viết của mình.
Author: DuongVT19