- vừa được xem lúc

Dart/Flutter So sánh abstract class, interface, mixin

0 0 13

Người đăng: Dang Anh Quan

Theo Viblo Asia

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)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ể extends 1 class
  • Phải override abstract fun hoặ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ể implements nhiều class
  • Phải override lại tất cả fun, cả normal fun chứ 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 extendsimplements

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ể with nhiều mixin
  • Có thể giới hạn class sử dụng mixin với on Class
  • Không thể extends mixin
  • Nếu implements mixin thì phải override lại tất cả fun hoặc C3 là abstract class, chứ không dùng lại được code
  • Trường hợp with nhiều mixin có chung fun, fun của mixin cuố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é.

Bình luận

Bài viết tương tự

- vừa được xem lúc

Học Flutter từ cơ bản đến nâng cao. Phần 1: Làm quen cô nàng Flutter

Lời mở đầu. Gần đây, Flutter nổi lên và được Google PR như một xu thế của lập trình di động vậy.

0 0 254

- vừa được xem lúc

Học Flutter từ cơ bản đến nâng cao. Phần 3: Lột trần cô nàng Flutter, BuildContext là gì?

Lời mở đầu. Màn làm quen cô nàng FLutter ở Phần 1 đã gieo rắc vào đầu chúng ta quá nhiều điều bí ẩn về nàng Flutter.

0 0 189

- vừa được xem lúc

Dart Cheat Sheet - Full bộ "bỏ túi" các syntax trong ngôn ngữ Dart

Dart là một ngôn ngữ mới dùng cho cả Mobile và Web với Flutter Framework, thậm chí dùng cho Backend. Để giúp mọi người dễ dàng nắm bắt ngôn ngữ này hơn, 200lab Education đã tổng hợp thành bộ "bí tịch" dưới đây để tra cứu nhanh, tăng tốc phát triển phần mềm.

0 0 40

- vừa được xem lúc

Học Flutter từ cơ bản đến nâng cao. Phần 2: StatefulWidget vs StatelessWidget. Khi nào thì cần sử dụng cái nào?

Lời mở đầu. Ở bài trước, chúng ta đã dừng lại ở một kết thúc mở.

0 0 86

- vừa được xem lúc

Học Flutter từ cơ bản đến nâng cao. Phần 4: Lột trần InheritedWidget

Lời mở đầu. Trong đoạn kết của phần 2, chúng ta đã đối mặt với 1 bài toán: Làm thế nào để truyền data từ một widget cha nào đó xuống thẳng widget chắt mà không phải sử dụng constructor để truyền xuống

0 0 55

- vừa được xem lúc

Chinh phục RxDart Flutter trong 3 nốt nhạc. Nốt thứ nhất: Stream và giải thích các thuật ngữ

Lời mở đầu. Mình viết series này với mục đích chia sẻ kiến thức về RxDart trong Flutter.

0 0 63