Interface là gì?


Interface là gì?
          Trong bài viết này, mình sẽ giải thích từ cấp độ nghĩa của từ đến khái niệm của interface.
Các đối tượng tương tác với thế giới bên ngoài thông qua phương thức (sau này cụm từ “trạng thái” và “hành vi” như các bài viết trước mình sẽ thay bằng “thuộc tính” và “phương thức”). Các phương thức của một đối tượng chính là mối liên hệ sự tương tác giữa đối tượng và thế giới thực, hay còn gọi nó là interface (giao diện). Như một cái ti vi, là một ví dụ, ta có thể tương tác với các điện tử bên trong chiếc ti vi thông qua các nút bấm. Vậy các nút bấm chính là interface giữa bạn và ti vi.

Interface giúp bạn và ti vi tương tác với nhau

          Trong lập trình hướng đối tượng, khái niệm interface nghĩa là tập hợp các phương thức, không có các thuộc tính như một class. Cú pháp khởi tạo interface như sau:
//Tạo một interface của xe đạp
interface IBicycle {
       //interface này gồm 1 phương thức cho xe đạp chạy khi có tín hiệu bắt đầu, phương thức này vẫn chưa được định nghĩa
       boolean isRun(boolean start);
}
          Khi một lớp muốn sử dụng interface, ta ghi implement phía sau lớp cộng với tên interface.
class Bicycle implements IBicycle{
       //Định nghĩa phương thức isRun trong lớp Bicycle

       public boolean isRun(boolean start) {
             return start==true;
       }

}
          Thông thường, interface không định nghĩa phương thức mà ta phải định nghĩa nó trong một class đã implements interface. Tuy nhiên, nếu muốn định nghĩa trước ở trong interface, ta dùng từ khóa static hoặc default trước phương thức đó. Khi đó tại class có implements chúng ta không cần phải định nghĩa lại phương thức trên. (Sự khác biệt giữa static và default các bạn có thể tham khảo trong các bài khác).
Interface cũng có 1 phần giống như kế thừa, tức là cũng thừa hưởng những tính chất từ gốc sang, nhưng xét về mặt ý nghĩa, hai khái niệm này hoàn toàn khác nhau.
Nói về interface thì phát sinh rất nhiều vấn đề xoay quanh nó, bài viết của mình chỉ giải thích sơ bộ về interface, không đi sâu về nó nhiều. Các bạn có thể tham khảo thêm ở các tài liệu khác để biết rõ hơn.
Nội dung bài viết dựa trên Oracle kết hợp với kiến thức mình có.

Người viết: Lê Công Diễn

Mang đi nhớ ghi nguồn

Nhận xét

Bài đăng phổ biến từ blog này

Deploy project Springboot MIỄN PHÍ sử dụng Render

Ứng dụng Mã hóa bất đối xứng (Asymmetric cryptography) vào Chữ ký số (Digital Signature)

API và HTTP - Một số khái niệm cơ bản cần biết về Web (Phần 2)