TẠI SAO PHẢI SỬ DỤNG INTERFACE

Trong một lần tình cờ vào VOZ forums, gồm một các bạn hỏi về Interface vào Java là gì? Nó không giống với Abstract Class vị trí nào? lý do phải sử dụng Interface, tuy vậy nó chẳng rút gọn code đi tý nào, thậm chí còn dài hơn. Khoác dù có nhiều bạn vấn đáp cho nhà topic kia nhưng hầu hết là hiểu sai, hoặc không biết rõ thực chất của Interface trong Java.

Bạn đang xem: Tại sao phải sử dụng interface

Để chúng ta có tầm nhìn thấu đáo, đọc rõ bản chất của Interface. Từ đó rất có thể ứng dụng Interface một cách chuẩn chỉ cho dự án của mình. Mình đã cho ra đời nội dung bài viết này.

*


Nội dung chủ yếu của bài bác viết

Java Interface là gì? có phải “bộ mặt” của Java?Đặc điểm bao gồm của Java Interface

Java Interface là gì? có phải “bộ mặt” của Java?

Để gọi một cách chính xác thì đề nghị đọc định nghĩa Interface của chủ yếu chủ Oracle:


In its most common form, an interface is a group of related methods with empty bodies.Oracle

Đến Oracle cũng tất yêu định nghĩa Interface một bí quyết khoa học kiểu: Interface là xyz, bla bla. Nhưng chúng ta có thể hiểu một phương pháp nôm na và chính xác như sau: Trong trái đất thực, chúng ta có thứ (đồ vật, con vật…) và những hành vi của nó. Interface được sinh là nhằm định nghĩa các hành vi của một tổ vật.

Mình lấy ví dụ như sau: Một con mèo (đây là bé vật) thì có các hành vi như: chạy, bắt chuột, ngủ…

Ta sẽ tư tưởng một Interface mèo như sau:

interface CatBehaviors // Cách bé mèo chạy với tốc độ void run(int speed); // Cách con mèo bắt con chuột void catchMouse(int mouse); // Định nghĩa cách con mèo ngủ. Void sleep();Sau này họ định nghĩa một bé mèo thì tất nhiên nó vẫn phải các hành vi của nhỏ mèo, cho dù nó là mèo tam thể hay mèo vàng…

class cat implements CatBehaviors private String màu_lông; //Cách con mèo chạy với tốc độ void run(int speed) ... //Cách bé mèo bắt con chuột void catchMouse(int mouse) ... // Định nghĩa cách nhỏ mèo ngủ. Void sleep() ... Về học thuật thì Interface chính là khái niệm để hiện thực hóa triết lý đa hình vào lập trình phía đối tượng. Rõ ràng hơn thì bản thân sẽ giải thích ở phần sau của bài bác viết.

Interface Java cũng là một trong Abstract Class bao gồm các method được tư tưởng (nhưng ngôn từ của method thì ko được viết cầm thể, người ta hotline là abstract method). Một Class sau đây sẽ implements một Interface, mang lại lúc kia class bắt đầu viết cụ thể nội dung của các method được có mang trong interface.

Trong Interface, bên cạnh abstract method, bạn hoàn toàn rất có thể thêm constants, static methods, nested interfaces (interface vào một interface) và default methods.

Điểm như là – không giống nhau giữa Interface và Abstract class:

Một interface về cơ bạn dạng hoàn toàn giống với abstract class. Một interface cũng có các abstract method và các method được thiết kế với để implement ở các class khác. Việc implement này trọn vẹn giống với bài toán extend với override method vào Abstract class.

Về điểm không giống nhau, thì mình thấy tất cả 2 điểm chính:

về phong thái viết code: các method trong interface bắt buộc là empty method, có nghĩa là method không có nội dung, chỉ mang tên hàm, tham số với kiểu tài liệu trả về. Trong những lúc với abstract class thì chúng ta hoàn toàn rất có thể thêm abstract method hoặc method thông thường (là method gồm nội dung, logic bên trong body). Về mục tiêu sử dụng: Interface là một tính năng mà chúng ta cũng có thể thêm và bất kể class nào. Từ chức năng ở đây không đồng nghĩa tương quan với method (hay có cách gọi khác là hàm).Abstract class là 1 class cha cho toàn bộ các class bao gồm cùng bản chất. Thực chất ở đây được gọi là kiểu, loại, nhiệm vụ của class.

Xem thêm: Bị Chê Đắt, Tại Sao Lại Đắt, 10 Sự Thật Đằng Sau Sự Đắt Đỏ Này

Tại sao chúng ta cần Interface

Lý do chính là Java không cung ứng đa kế thừa. Vị đó, các bạn không thể kế thừa cùng một lúc nhiều class. Những class nhỏ không thể kế thừa những thuộc tính của rất nhiều class cha, vị nó dẫn đến bài toán Kim cương cứng (các bạn search Google nhằm biết điều này nhé).

Để xử lý vấn đề này, tín đồ ta mới cho ra đời Interface. Để làm rõ hơn, chúng ta sẽ cùng cả nhà xem ví dụ dưới đây.

Bạn muốn thi công một Sở thú, gồm không ít các bé vật. Về cơ phiên bản thì các con vật đều có các điểm lưu ý chung như: bao gồm tên, gồm tiếng kêu, bao gồm chân (2 chân, 4 chân, hoặc 0 gồm chân nào…). Trường đoản cú những điểm lưu ý chung đó chúng ta tạo một abstract class là: abstract class Animal

*

Tuy nhiên lại có một số trong những loài lại biết bay, một số loài thì biết bơi. Và dòng “dở” là chủng loại biết cất cánh lại lần khần bơi. Vị vậy, ta thiết yếu để điểm lưu ý biết bay hay biết bơi trong class Animal được.

Đó là lý do chúng ta cần tạo ra 2 Interface khác nhau là Can_Fly với Can_Swim rồi xem class nào có thể implements từng dòng thích hợp.

*

Đặc điểm chính của Java Interface

Bạn đọc mang lại chắc cũng đã hiểu phần làm sao về Interface trong Java rồi đúng không? lúc nào thì rất cần được sử dụng Interface, cùng nó không giống với Class thường nơi nào.

Giờ mình vẫn tổng sánh lại những điểm lưu ý chính mà bạn phải nhớ về Interface:

Các method được khai báo trong Interface yêu cầu là method rỗng.Không thể tạo đối tượng người dùng từ Interface.Một Class có thể implement một hoặc nhiều Interface.

Mình viết một đoạn code bản thân họa đến đỡ chán nản nhé.

public interface extInterface public void method1(); public void method2();import java.util.Scanner;class Edureka implements extInterface public void method1() System.out.println("implementation of method1"); Scanner scanner = new Scanner(System.in); System.out.println("Enter number lớn find square root in Java : "); double square = scanner.nextDouble(); double squareRoot = Math.sqrt(square); System.out.printf("Square root of number: %f is : %f %n" , square, squareRoot); public void method2() System.out.println("implementation of method2"); public static void main(String arg<>) extInterface obj = new Edureka(); obj.method1(); Chạy đoạn code đang thu được kết quả:

implementation of method1Enter number to find square root in Java :16Square root of number: 16.0 is : 4.0

Tổng kết

Như vậy là tôi đã hoàn thành bài viết về Interface vào Java. Đọc đến đây, các bạn đã “vỡ” ra được nhiều điều không? còn nếu không thì… bi lụy ghê.

Các bạn nên nhớ, Interface chỉ là 1 trong công cụ, nó không hẳn là triết lý lập trình. Bởi vậy, lúc ai đó nói đến lập trình phía đối tượng, tới nhiều hình mà nói: Tính đa hình là interface. Thì không phải là đúng nhé. Nhớ này: Interface chỉ là một công nắm để triển khai tính đa hình.