Interface trong Dart
1. Interface Example 1
Interface là một khái niệm quan trọng trong các ngôn ngữ lập trình, nói một cách đơn giản, interface là một danh sách các phương thức mà một lớp nếu thi hành (implements) interface này cần phải có.
Trong ngôn ngữ lập trình Java, từ khoá interface được sử dụng để định nghĩa một interface. Ngôn ngữ Dart không có từ khoá interface. Tất cả các lớp trong Dart có thể được coi là một interface một cách ngầm định (implicitly).
Để đơn giản hãy xem tình huống sau:
interface_ex1.dart - (Part 1 of 3)
abstract class Aa {
void silent();
}
abstract class Bb1 extends Aa {
void sayHello(String name) {
print("From Bb1, hello $name");
}
}
// ...
- Lớp Aa có một phương thức.
- Lớp Bb1 định nghĩa một phương thức của riêng nó, và một phương thức được thừa kế từ lớp Aa, vậy lớp Bb1 có 2 phương thức. Bạn dễ dàng liệt kê ra danh sách các phương thức của Bb1 như hình minh hoạ ở trên, danh sách đó là một interface. Và chúng ta có thể coi rằng bất kỳ một lớp nào cũng được coi ngầm định là một interface.
interface_ex1.dart - (Part 2 of 3)
// ....
class Cc1 implements Bb1 {
void silent() {
print("Nothing");
}
void sayHello(String name) {
print("Hello $name");
}
// Other members ...
}
Lớp Cc1 thi hành (implements) Bb1. Nếu lớp Cc1 không được định nghĩa là trừu tượng (abstract) thì nó cần phải thi hành (implement) tất cả các phương thức của interface Bb1.
Xem code đầy đủ của ví dụ:
interface_ex1.dart
abstract class Aa {
void silent();
}
abstract class Bb1 extends Aa {
void sayHello(String name) {
print("From Bb1, hello $name");
}
}
class Cc1 implements Bb1 {
void silent() {
print("Nothing");
}
void sayHello(String name) {
print("Hello $name");
}
// Other members ...
}
void main() {
// Create Aa object:
Aa obj1 = new Cc1();
obj1.silent();
// Create Bb1 object:
Bb1 obj2 = new Cc1();
obj2.sayHello("Tom");
}
Output:
Nothing
Hello Tom
2. Interface Example 2
Một lớp có thể thi hành (implements) một hoặc nhiều interface. Danh sách các interface ngăn cách nhau bởi dấu phẩy.
Cú pháp:
class MyClass implements MyInterface1, MyInterface2, MyInterface3
Để đơn giản chúng ta sẽ phân tích code dưới đây:
interface_ex2.dart - (Part 1 of 3)
abstract class Aa {
void silent();
}
abstract class Bb1 extends Aa {
void sayHello(String name) {
print("From Bb1, hello $name");
}
}
class Bb2 {
void sayBye() {
print("Bye!");
}
}
Lớp Bb1 có một phương thức của riêng nó và một phương thức được thừa kế từ lớp Aa. Ngầm định, nó được coi là một interface có 2 phương thức.
Tương tự, lớp Bb2 cũng được coi ngầm định là một interface có 1 phương thức.
Lớp Cc2 thi hành (implements) Bb1 và Bb2. Nó thi hành tất các các phương thức của các interface:
interface_ex2.dart - (Part 2 of 3)
// ....
class Cc2 implements Bb1, Bb2 {
void silent() {
print("Nothing");
}
void sayHello(String name) {
print("Hello $name");
}
void sayBye() {
print("Good Bye!");
}
// Other members ...
}
Xem code đầy đủ của ví dụ:
interface_ex2.dart
abstract class Aa {
void silent();
}
abstract class Bb1 extends Aa {
void sayHello(String name) {
print("From Bb1, hello $name");
}
}
class Bb2 {
void sayBye() {
print("Bye!");
}
}
class Cc2 implements Bb1, Bb2 {
void silent() {
print("Nothing");
}
void sayHello(String name) {
print("Hello $name");
}
void sayBye() {
print("Good Bye!");
}
// Other members ...
}
void main() {
Cc2 obj2 = new Cc2();
obj2.sayHello("Tom");
obj2.sayBye();
}
Output:
Hello Tom
Good Bye!
3. Interface Example 3
Một lớp thi hành (implements) các interface, nhưng không có tất cả các phương thức được liệt kê trong interface này thì nó phải được định nghĩa với từ khoá abstract (trừu tượng). Các phương thức còn lại sẽ được thi hành tại các lớp con.
interface_ex3.dart
abstract class Aa {
void silent();
}
abstract class Bb1 extends Aa {
void sayHello(String name) {
print("From Bb1, hello $name");
}
}
// Abstract class
abstract class Cc3 implements Bb1 {
void silent() {
print("Nothing");
}
}
class Dd extends Cc3 {
void sayHello(String name) {
print("Hi $name");
}
}
void main() {
Dd obj = new Dd();
obj.sayHello("Tom");
}
Output:
Hi Tom
Các hướng dẫn lập trình Dart
- Kiểu dữ liệu Boolean trong Dart
- Hướng dẫn và ví dụ hàm trong Dart
- Hướng dẫn và ví dụ Dart Closures
- Interface trong Dart
- Hướng dẫn và ví dụ phương thức trong Dart
- Constructor trong Dart
- Property trong Dart
- Toán tử chấm chấm (..) trong Dart
- Hướng dẫn và ví dụ Dart Generics
- Lập trình Dart với công cụ trực tuyến DartPad
- Cài đặt Dart SDK trên Windows
- Cài đặt Visual Studio Code trên Windows
- Cài đặt Dart Code Extension cho Visual Studio Code
- Cài đặt Dart Plugin cho Android Studio
- Chạy ví dụ Dart đầu tiên của bạn trong Visual Studio Code
- Chạy ví dụ Dart đầu tiên của bạn trong Android Studio
- Dart JSON với thư viện dart:convert
- Hướng dẫn và ví dụ Dart List
- Biến (Variable) trong ngôn ngữ Dart
- Hướng dẫn và ví dụ Dart Map
- Vòng lặp trong Dart
- Xử lý Dart JSON với gói dart_json_mapper
- Trình chuyển đổi mã nguồn (Transpiler) là gì?
- Phân tích XML trong Dart
- Hướng dẫn và ví dụ Dart http
- Hướng dẫn và ví dụ Dart Future
- Các phương thức mở rộng (Extension) trong Dart
- Mixins trong Dart
- Bài thực hành Dart phân tích JSON với gói dart:convert
- Bài thực hành Dart http CRUD
- Từ khoá part và part of trong Dart
- Hướng dẫn và ví dụ Dart Dio
Show More