Rate this post

Một interface xác định cú pháp mà bất kỳ thực thể nào cũng phải tuân theo. Dart không có bất kỳ cú pháp riêng biệt nào để xác định interface. interface định nghĩa giống như lớp nơi bất kỳ tập hợp phương thức nào có thể được truy cập bởi một đối tượng. Khai báo Lớp có thể tự interface.

Các bài viết liên quan:

Từ khóa triển khai là cần thiết để được viết, theo sau là tên lớp để có thể sử dụng interface. Lớp thực thi phải cung cấp một định nghĩa đầy đủ về tất cả các chức năng của interface được triển khai. Chúng ta có thể nói rằng một lớp phải xác định mọi chức năng với phần thân trong interface mà chúng ta muốn đạt được.

Khai báo interface

Dart không cung cấp cú pháp để khai báo interface trực tiếp. Một cách ngầm định, bản thân một khai báo lớp là một interface chứa toàn bộ thành viên thể hiện của lớp và bất kỳ interface nào mà nó triển khai.

Triển khai một interface

Để làm việc với các phương thức interface, interface phải được thực thi bởi một lớp khác bằng cách sử dụng từ khóa triển khai . Một lớp được triển khai interface phải cung cấp triển khai đầy đủ tất cả các phương thức thuộc về interface. Sau đây là cú pháp của interface cài đặt.

Cú pháp:

class ClassName implements InterfaceName  

Trong ví dụ sau, chúng ta đang khai báo một lớp Employee . Mặc nhiên, lớp Kỹ sư thực hiện khai báo interface cho lớp Nhân viên . Hãy hiểu ví dụ trên bằng đoạn mã sau.

Ví dụ

class Employee 
{  
   void  display () {  
         print ( "Tôi đang làm kỹ sư" );  
                            }  
}  
// Định nghĩa interface bằng cách cấy một lớp khác  
class Engineer implements Employee   
{  
          void  display () {  
                 print ( "Tôi là một kỹ sư trong công ty này" );                   
}  
}  
void  main ()   
{  
Engineer eng =  new  Engineer ();  
eng.display ();  
}  

Đầu ra:

Tôi đang làm kỹ sư

Giải trình

Trong ví dụ trên, chúng tôi đã định nghĩa một lớp Kỹ sư là một interface triển khai lớp Kỹ sư. Sau đó, chúng tôi xác định cùng một phương thức display () trong cả hai lớp. Phương thức này ghi đè trong lớp Engineer, vì vậy chúng tôi đã tạo đối tượng của lớp Engineer trong một hàm main () gọi hàm display () . Nó in kết quả ra màn hình.

Thực hiện nhiều kế thừa

Chúng ta đã thảo luận trước đây rằng đa kế thừa không được Dart hỗ trợ, nhưng chúng ta có thể áp dụng nhiều interface. Có thể nói rằng, sử dụng nhiều interface, chúng ta có thể đạt được đa kế thừa trong Dart. Cú pháp được đưa ra dưới đây.

Cú pháp:

class ClassName implements interface1, interface2,…interface n  

Hãy hiểu ví dụ sau.

Ví dụ

class Student {
  String name = "";
  int age = 0;

  void displayName() {
    print("Tôi là ${name}");
  }

  void displayAge() {
    print("Tuổi của tôi là ${age}");
  }
}

class Faculty {
  String dep_name = "";
  int salary = 0;

  void displayDepartment() {
    print("Tôi là giáo sư của ${dep_name}");
  }

  void displaySalary() {
    print("Lương của tôi là ${salary}");
  }
}

// Định nghĩa interface bằng cách chèn một lớp khác
class College implements Student, Faculty {
  // Ghi đè các thành viên lớp Sinh viên
  String name = "";
  int age = 0;

  void displayName() {
    print("Tôi là ${name}");
  }

  void displayAge() {
    print("Tuổi của tôi là ${age}");
  }

// Ghi đè từng thành viên dữ liệu của lớp Khoa
  String dep_name = "";
  int salary = 0;

  void displayDepartment() {
    print("Tôi là nhà cung cấp của ${dep_name}");
  }

  void displaySalary() {
    print("Lương của tôi là ${salary}");
  }
}

void main() {
  College cg = new College();
  cg.name = "test1";
  cg.age = 25;
  cg.dep_name = "Cấu trúc dữ liệu";
  cg.salary = 50000;

  cg.displayName();
  cg.displayAge();
  cg.displayDepartment();
  cg.displaySalary();
}

Giải trình:

Trong ví dụ trên, chúng tôi đã triển khai nhiều interface trong lớp College. Mỗi thành viên dữ liệu của lớp Sinh viên và Khoa được ghi đè trong lớp Cao đẳng. Chúng tôi đã tạo đối tượng của lớp College và gọi các hàm ghi đè. Nó in kết quả.

Quy tắc triển khai interface

  1. Một lớp thực thi interface phải ghi đè lên mọi phương thức và biến thể hiện của một interface.
  2. Dart không cung cấp cú pháp để khai báo interface trực tiếp. Khai báo lớp có thể coi là interface của chính nó.
  3. Một lớp interface phải cung cấp việc triển khai đầy đủ tất cả các phương thức thuộc về các interface.
  4. Chúng ta có thể triển khai một hoặc nhiều interface đồng thời.
  5. Sử dụng interface, chúng ta có thể đạt được đa kế thừa.

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 *

Contact Me on Zalo
Call now