Dart/Flutter So sánh abstract class, interface, mixin
Bài đăng này đã không được cập nhật trong 3 năm
Khi lập trình dart và flutter chắc hẳn bạn đã gặp và sử dụng abstract class, interface(implements class) và mixin nhưng liệu bạn đã hiểu rõ sự khác nhau giữa chúng, hãy cùng mình đi so sánh để làm rõ điểm khác biệt nhé
Mình có ví dụ như sau
abstract class AbstractClass() {
    abstractFun();
    normalFun() {}
}
extends
class C1 extends AbstractClass {
  
  abstractFun() {}
}
Khi bạn extends thì bạn sẽ
- Chỉ có thể extends1 class
- Phải override abstract funhoặc C1 làabstract class
- Dùng lại normal fun
implements
class C2 implements AbstractClass {
  
  abstractFun() {}
  
  normalFun() {}
}
Khi bạn implements thì bạn sẽ
- Có thể implementsnhiều class
- Phải overridelại tất cả fun, cảnormal funchứ không dùng lại được, hoặc C2 làabstract class
mixin
mixin là một cách sử dụng lại code của dart, tận dụng ưu điểm và khắc phục nhược điểm của extends và implements
mixin M1 {
  doWork() {}
  stop() {}
}
class C3 with M1 {
}
Khi bạn with mixin thì bạn sẽ
- Dùng lại được code
- Có thể withnhiềumixin
- Có thể giới hạn class sử dụng mixin với on Class
- Không thể extends mixin
- Nếu implements mixinthì phảioverridelại tất cả fun hoặc C3 làabstract class, chứ không dùng lại được code
- Trường hợp withnhiềumixincó chungfun,funcủamixincuối cùng trong list mixin sẽ được thực thi
Ở ví dụ trên thì parent class là abstract class, trường hợp parent class là normal class thì cũng tương tự, các bạn khám phá nhé.
All rights reserved
 
  
 