Interface là gì? Đặc điểm của Interface cho người mới

Interface là gì? Đặc điểm của Interface dành cho người mới

Chia sẻ kiến thức 03/04/2022

Bạn đã biết Interface là gì chưa? Và đặc điểm của Interface như thế nào? Trong nội dung bài viết dưới đây, FUNiX sẽ giải đáp cụ thể để các bạn lập trình viên có thể ứng dụng tốt cho việc học tập và công việc hàng ngày của mình.  

Interface là một khái niệm quan trọng trong nhiều lĩnh vực, đặc biệt là công nghệ thông tin và thiết kế. Trong lập trình, interface đóng vai trò như một hợp đồng định nghĩa các phương thức mà một lớp phải thực hiện, giúp tạo ra sự nhất quán và linh hoạt trong việc xây dựng và mở rộng hệ thống. Trong lĩnh vực thiết kế, interface thường được hiểu là giao diện người dùng (UI), nơi người dùng tương tác với phần mềm hoặc thiết bị, tập trung vào việc cung cấp trải nghiệm trực quan và dễ sử dụng. Ngoài ra, trong hệ thống phần cứng và phần mềm, interface còn là cầu nối để các thành phần giao tiếp và trao đổi dữ liệu một cách hiệu quả, ví dụ như API, cổng USB, hoặc giao thức mạng. Với vai trò đa dạng, interface là nền tảng để kết nối và tối ưu hóa sự hợp tác giữa các thành phần trong hệ sinh thái công nghệ.

>>> Xem thêm: Tham khảo ngay cách phân biệt Interface và Abstraction class trong học lập trình Java

1. Khái niệm Interface là gì?

Interface là một hợp đồng định nghĩa các phương thức (method) mà một lớp (class) phải thực hiện, nhưng không cung cấp phần triển khai (implementation).

  • Mục đích: Interface giúp tạo ra một cơ chế để các lớp khác nhau tuân thủ cùng một cấu trúc, dễ mở rộng và duy trì mã nguồn.
  • Ví dụ: Trong Java, C#, hoặc PHP, interface thường chứa các phương thức abstract. Một lớp thực hiện (implement) interface phải định nghĩa tất cả các phương thức trong đó.

public interface Animal {
void makeSound(); // Chỉ định nghĩa, không có triển khai
}

public class Dog implements Animal {
public void makeSound() {
System.out.println(“Woof!”);
}
}

Interface  là một lớp vỏ bên ngoài của các hàm nhỏ lẻ
Khái niệm Interface là gì?

Interface  là một lớp vỏ bên ngoài của các hàm nhỏ lẻ.

Trong java, Interface là một hệ thống giao diện. Thông qua cách sử dụng, chúng ta có thể kế thừa nhiều lớp Interface để tạo thành một lớp hoàn toàn mới.

Cú pháp khai báo Interfaces trong Java:

interface interface-name

{

  //abstract methods

}

Ví dụ sử dụng Interface trong Java:

Shape.java

public interface Shape {String color = “red”;void draw();}Rectangle.java

public class Rectangle implements Shape {

Override Public void draw() {System.out.println(“Draw ” + color + ” rectangle”);}}Circle.java

public class Circle implements Shape {

Override Public void draw() {System.out.println(“Draw ” + color + ” circle”);}}ShapeApp.java

public class ShapeApp {public static void main(String<> args) {Shape rect = new Rectangle();rect.draw();System.out.println(“—“);Shape circle = new Circle();circle.draw();}}Kết quả:

Nếu không có chuyên môn, bạn khó có thể hiểu rõ về Interface. Bởi khái niệm này quá trừu tượng, khoa học và thuộc về thuật ngữ chuyên ngành.

2. Các đặc điểm của Interface trong lập trình

Interface có nhiều đặc điểm riêng biệt
Interface có nhiều đặc điểm riêng biệt.

2.1 Không có thân phương thức

Một trong những đặc điểm nổi bật của Interface là nó không chứa phần thân của phương thức. Interface chỉ định nghĩa chữ ký của phương thức mà không thực hiện hành động cụ thể. Điều này có nghĩa là các lớp con phải cung cấp cài đặt cho các phương thức này. Điều này giúp đảm bảo tính linh hoạt trong việc triển khai và tạo ra sự trừu tượng trong thiết kế phần mềm.

java
public interface Animal {
void makeSound(); // Không có thân phương thức
}

 

2.2 Không thể tạo đối tượng từ Interface

Interface không thể được khởi tạo như một đối tượng thông thường. Khi một lớp triển khai một interface, nó phải cung cấp phần thân của các phương thức trong interface đó. Lớp con sẽ là nơi thực thi cụ thể các phương thức của interface. Do đó, một interface chỉ đóng vai trò là bản thiết kế, không phải là đối tượng có thể khởi tạo.

java
// Không thể khởi tạo trực tiếp từ interface
// Animal a = new Animal(); // Lỗi

2.3 Một lớp có thể triển khai nhiều Interface

Khác với kế thừa (inheritance) trong lập trình hướng đối tượng, nơi một lớp chỉ có thể kế thừa từ một lớp cha duy nhất, các ngôn ngữ như Java và C# cho phép một lớp triển khai nhiều interface. Điều này giúp tạo ra sự linh hoạt cao trong việc thiết kế hệ thống, vì một lớp có thể kết hợp nhiều tính năng từ các interface khác nhau mà không bị ràng buộc bởi chỉ một lớp cha duy nhất.

java
public interface Animal {
void makeSound();
}

public interface Domestic {
void playWithOwner();
}

public class Dog implements Animal, Domestic {
@Override
public void makeSound() {
System.out.println("Bark");
}

@Override
public void playWithOwner() {
System.out.println("Playing with owner");
}
}

2.4 Tính kế thừa trong Interface

Mặc dù interface không có phần thân phương thức, nhưng nó hỗ trợ tính kế thừa giữa các interface. Một interface có thể kế thừa từ một hoặc nhiều interface khác, thừa hưởng các phương thức mà các interface cha đã định nghĩa. Điều này giúp tối ưu hóa mã nguồn và tái sử dụng các định nghĩa interface.

java
public interface Animal {
void makeSound();
}

public interface Mammal extends Animal {
void feedMilk();
}

Trong ví dụ trên, Mammal kế thừa từ Animal, do đó bất kỳ lớp nào triển khai Mammal cũng sẽ phải triển khai phương thức makeSound() từ interface Animal, ngoài việc triển khai phương thức feedMilk() từ Mammal.

2.4 Interface hỗ trợ đa hình (Polymorphism)

Interface giúp hỗ trợ đa hình trong lập trình. Khi một lớp triển khai một interface, bạn có thể sử dụng một đối tượng của lớp đó thông qua kiểu interface mà nó triển khai, thay vì sử dụng trực tiếp lớp đó. Điều này giúp mã nguồn dễ bảo trì và linh hoạt hơn.

java
public class Dog implements Animal {
@Override
public void makeSound() {
System.out.println("Bark");
}
}

public class Main {
public static void main(String[] args) {
Animal myAnimal = new Dog();
myAnimal.makeSound(); // Sẽ in ra "Bark"
}
}

Trong ví dụ trên, mặc dù biến myAnimal có kiểu Animal, nó có thể tham chiếu đến một đối tượng của lớp Dog nhờ vào cơ chế đa hình. Điều này giúp dễ dàng mở rộng hệ thống sau này mà không cần phải thay đổi mã đã viết.

2.4 Các phương thức mặc định và static trong Interface (Java 8 trở đi)

Kể từ phiên bản Java 8, interface có thể chứa các phương thức mặc định (default methods) và phương thức tĩnh (static methods). Điều này giúp mở rộng khả năng của interface mà không làm gián đoạn các lớp hiện có đã triển khai interface trước đó.

  • Phương thức mặc định: Cho phép cung cấp một cài đặt mặc định cho phương thức trong interface mà không yêu cầu các lớp con phải cài đặt lại.
java
public interface Animal {
default void sleep() {
System.out.println("Animal is sleeping");
}
}
  • Phương thức tĩnh: Là phương thức được khai báo với từ khóa static trong interface, có thể được gọi thông qua tên của interface.
java
public interface Animal {
static void info() {
System.out.println("This is an animal.");
}
}

3. Lợi ích và ứng dụng của Interface trong lập trình

a. Tăng tính linh hoạt và mở rộng

Interface giúp tách biệt các khái niệm trừu tượng và cụ thể. Nó cho phép các lớp triển khai giao diện mà không cần phải biết chi tiết về các lớp khác. Điều này mang lại sự linh hoạt trong việc thay đổi và mở rộng phần mềm mà không làm ảnh hưởng đến các thành phần còn lại của hệ thống.

b. Tạo ra các hệ thống dễ bảo trì

Bằng cách sử dụng interface, các nhà phát triển có thể thay đổi cách thức thực thi của một lớp mà không làm thay đổi các phần khác của hệ thống. Các lớp khác chỉ cần làm việc với các interface, thay vì các lớp cụ thể, điều này giúp cho việc bảo trì và nâng cấp hệ thống trở nên dễ dàng hơn.

c. Hỗ trợ đa dạng các mô hình thiết kế phần mềm

Interface là nền tảng của nhiều mô hình thiết kế phần mềm như Dependency Injection, Strategy Pattern, và Factory Pattern. Các mô hình này sử dụng interface để tạo ra các hệ thống dễ dàng thay thế các thành phần mà không cần phải thay đổi mã nguồn ở những phần khác trong hệ thống.

4. Kết luận

Interface là một công cụ mạnh mẽ trong lập trình hướng đối tượng, giúp tăng tính trừu tượng, linh hoạt và dễ bảo trì của hệ thống phần mềm. Các đặc điểm như không có thân phương thức, khả năng triển khai nhiều interface, và hỗ trợ đa hình giúp interface trở thành một phần quan trọng trong thiết kế phần mềm hiện đại. Nó không chỉ giúp xây dựng các hệ thống phần mềm dễ dàng mở rộng mà còn giúp tạo ra các ứng dụng có khả năng duy trì và phát triển lâu dài.

Đăng ký học lập trình CNTT tại FUNiX ở đây:

Nguyễn Cúc

ĐĂNG KÝ TƯ VẤN HỌC LẬP TRÌNH TẠI FUNiX

Bình luận (
0
)

Bài liên quan

  • Tầng 0, tòa nhà FPT, 17 Duy Tân, Q. Cầu Giấy, Hà Nội
  • info@funix.edu.vn
  • 0782313602 (Zalo, Viber)        

yêu cầu gọi lại