Triển khai Interface trong Java
Một lớp thực hiện một giao diện có thể được coi là lớp chỉ định một contract . Điều này có nghĩa là lớp đồng ý thực hiện các hành vi cụ thể của giao diện. Trừ khi một lớp được khai báo là trừu tượng, nó sẽ thực hiện tất cả các hành vi của giao diện.
Để triển khai một giao diện, một lớp sử dụng từ khóa triển khai. Từ khóa triển khai xuất hiện trong khai báo lớp sau phần mở rộng của khai báo.
Các tính chất của interface
Interface có những tính chất riêng, Hcare sẽ giới thiệu một số tính chất nổi bật nhất:
-
Không phải là một đối tượng
-
Interface thường chỉ được khai báo về mặt phương thức vì nó khá trừu tượng
-
Nó không chứa phần định nghĩa vì chỉ chứa mình khai báo (giống như phương thức thuần ảo nhưng lại không cần phải khai từ khóa Abstract)
-
Không chứa các thuộc tính dù là biến tĩnh hay hằng số
-
Phạm vi truy cập cho các thành phần bên trong không thể khai báo cho nên chúng sẽ được mặc định là Public
-
Một class thì người dùng implement được nhiều interface
-
Không cần từ khóa Override khi ghi đè một thành phần trong Interface
-
Các interface kế thừa lẫn nhau bởi các lớp có thể thực thi nhiều lập trình cùng lúc
-
Tuy nhiên, 1 Interface có thể kế thừa 2 hoặc nhiều Interface nhưng lại không thể kế thừa bất kỳ 1 lớp nào
Interface trong lập trình hướng đối tượng của Java
Khai báo và sử dụng interface
Cú pháp:
interface
// Khai báo các thành phần bên trong interface
Bây giờ ta sẽ tạo ra interface IStudy giành riêng cho class Student, ta vẫn tạo file .java như mọi khi và viết chương trình như sau:
interface IStudy { void study(); }
Ta cho class Student kế thừa nó như sau:
public class Student extends Person implements IStudy{
Nếu dùng Eclipse, bạn sẽ thấy IDE yêu cầu override lại phương thức study() của IStudy ngay:
Ta sẽ overriding, thêm đoạn chương trình trong lớp Student như sau:
@Override public void study() { // TODO Auto-generated method stub System.out.println(this.name+" is studing"); }
Một class có thể kế thừa nhiều interface, ta sẽ thử tạo thêm interface ISpeak:
interface ISpeak { void speak(); }
Ta thêm interface ISpeak vào class Student bằng cách sau:
public class Student extends Person implements IStudy, ISpeak{
Hoặc, ta thử thêm ISpeak ở lớp cha Person:
public abstract class Person implements ISpeak{
Bởi vì class Person là lớp ảo, nên Person không cần override phương thức speak(). Ngoài ra, Student là lớp con Person, nên mặc dù Student không kế thừa ISpeak trực tiếp nhưng vẫn phải override phương thức speak(). Ta sẽ thấy Eclipse yêu cầu khai báo:
Ta sẽ hoàn thiện lớp Student như sau:
public class Student extends Person implements IStudy{ public String universityName; public Student(String name, int age, float height, String universityName) { super(name, age, height); this.universityName = universityName; } public void getInfo() { super.getInfo(); System.out.println("University Name:"+this.universityName); } @Override public Object clone() { Student other = new Student(this.name, this.getAge(), this.height, this.universityName); return other; } @Override public void study() { // TODO Auto-generated method stub System.out.println(this.name+" is studing"); } @Override public void speak() { // TODO Auto-generated method stub System.out.println(this.name+" is speaking"); } }
Thuộc tính của giao diện Java
Giao diện có các thuộc tính sau:
- Một giao diện trong java sẽ hoàn toàn là abstract. Trong khi khai báo một giao diện, bạn không cần sử dụng từ khóa abstract (trừu tượng) .
- Mỗi phương thức của một giao diện cũng hoàn toàn trừu tượng, vì vậy chúng ta không cần sử dụng từ khóa trừu tượng trong khi khai báo các phương thức bên trong một giao diện.
- Mỗi phương thức trong một giao diện là hoàn toàn công khai.
- Tất cả các biến được định nghĩa trong một giao diện là công khai, tĩnh và cuối cùng. Nói cách khác, các giao diện chỉ có thể khai báo các hằng chứ không phải các biến thể hiện.
Ưu điểm của Interface trong Java
- Sử dụng các giao diện để đạt được data abstraction.
- Chúng ta cũng sử dụng chúng để hỗ trợ chức năng của đa kế thừa trong Java.
Sử dụng interface để truyền và nhận dữ liệu giữa các abstract class
Chúng ta vẫn thường nghe tới người dùng các abstract trao đổi dữ liệu qua interface nhưng chưa hình dung được nó thực hiện ra làm sao. Hcare sẽ diễn tả cụ thể chúng như sau:
-
Thông thường người dùng có 2 cách thực hiện lệnh này. Cách 1 đó là việc truyền đối tượng của interface cho các abstract class cập nhập thông tin, cách thứ 2 là dùng interface để thay thế.
Với cách 1 thì người dùng thực hiện thao tác truyền chính đối tượng là xong, nhưng truyền nhanh thì lại dễ bị sai sót, trục trặc, nhầm đối tượng. Quá trình chuyển sang class download phải truyền qua nhiều đối tượng với nhiều trung gian.
Lý do chính là vì dowload này chấp nhận tất cả các giao diện được chuyển qua, không có thanh lọc. Điều này tạo ra sự phức tạp, khó khăn và dễ bị trục trặc đường truyền.
Nếu cách 1 khó khăn thì bạn chuyển qua cách 2 khi chuyển đối tượng không qua trung gian. Sử dụng interface có nhiều ưu điểm hơn với truyền đối tượng sang download.
Interface và Abstract Class đều mang tính trừu tượng
Tập hợp các thông tin trên bài viết này đã giải đáp được cho các bạn câu hỏi interface là gì. Bạn có thể vận dụng để sử dụng phù hợp với mục đích học tập, công việc của mình.
Thảo luận
Chưa có thảo luận nào về Bài viết Interface là gì? Mục đích sử dụng của Interface
Xem nhiều nhất
Ở những bài trước mình cũng có sử dụng interface rồi nhưng chưa giải thích về nó, nên bài này mình sẽ giới thiệu với mọi người về interface trong Java và những thứ liên quan đến nó.
Sự khác biệt giữa Interface và Lớp trong Java
- Không giống như một lớp, bạn không thể khởi tạo hoặc tạo một đối tượng của giao diện.
- Tất cả các phương thức trong một giao diện nên được khai báo là trừu tượng.
- Một interface trong Java không chứa bất kỳ hàm tạo nào, nhưng một lớp có thể.
- Một giao diện không thể chứa các trường cá thể. Nó chỉ có thể chứa các trường được khai báo là tĩnh và cuối cùng.
- Một giao diện không thể được mở rộng hoặc kế thừa bởi một lớp; nó được thực hiện bởi một lớp.
- Một interface trong Java không thể triển khai bất kỳ lớp nào hoặc một giao diện khác.
Java Interface là gì? Có phải “bộ mặt” của Java?
Để hiểu một cách chính xác thì phải đọc khái niệm Interface của chính chủ Oracle:
In its most common form, an interface is a group of related methods with empty bodies.– Oracle –
Đến Oracle cũng không thể định nghĩa Interface một cách khoa học kiểu: Interface là xyz, bla bla. Nhưng chúng ta có thể hiểu một cách nôm na và chính xác như sau: Trong thế giới thực, chúng ta có vật (đồ vật, con vật…) và các hành vi của nó. Interface được sinh là để định nghĩa các hành vi của một nhóm vật.
Mình lấy ví dụ như sau: Một con mèo (đây là con vật) thì có các hành vi như: chạy, bắt chuột, ngủ…
Ta sẽ định nghĩa một Interface Cat như sau:
interface CatBehaviors { // Cách con mèo chạy với tốc độ void run(int speed); // Cách con mèo bắt chuột void catchMouse(int mouse); // Định nghĩa cách con mèo ngủ. void sleep(); }
Sau này chúng ta định nghĩa một con mèo thì tất nhiên nó sẽ phải các hành vi của con mèo, 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 con mèo bắt chuột void catchMouse(int mouse){ … } // Định nghĩa cách con 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 trong lập trình hướng đối tượng. Cụ thể hơn thì mình sẽ giải thích ở phần sau của bài viết.
Interface Java cũng là một Abstract Class bao gồm các method được định nghĩa (nhưng nội dung của method thì không được viết cụ thể, người ta gọi là abstract method). Một Class sau này sẽ implements một Interface, đến lúc đó class mới viết cụ thể nội dung của các method được định nghĩa trong interface.
Trong Interface, ngoài abstract method, bạn hoàn toàn có thể thêm constants, static methods, nested interfaces (interface trong một interface) và default methods.
Điểm giống – khác nhau giữa Interface và Abstract class:
Một interface về cơ bản 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ế để implement ở các class khác. Việc implement này hoàn toàn giống với việc extend và override method trong Abstract class.
Về điểm khác nhau, thì mình thấy có 2 điểm chính:
- Về cách viết code: các method trong interface phải là empty method, tức là method không có nội dung, chỉ có tên hàm, tham số và kiểu dữ liệu trả về. Trong khi với abstract class thì bạn hoàn toàn có thể thêm abstract method hoặc method bình thường (là method có nội dung, logic bên trong body).
- Về mục đích sử dụng:
- Interface là một chức năng mà bạn có thể thêm và bất kì class nào. Từ chức năng ở đây không đồng nghĩa với method (hay còn gọi là hàm).
- Abstract class là một class cha cho tất cả các class có cùng bản chất. Bản chất ở đây được hiểu là kiểu, loại, nhiệm vụ của class.
Kế thừa Interface trong Java
Một lớp triển khai Interface nhưng một Interface kế thừa từ Interface khác.
interface Printable{ void print(); } interface Showable extends Printable{ void show(); } class Testinterface2 implements Showable{ public void print() { System.out.println(“Hello”); } public void show() { System.out.println(“Welcome”); } public static void main(String args[]){ Testinterface2 obj = new Testinterface2(); obj.print(); obj.show(); } }
Cú pháp khai báo Interfaces trong Java:
Để khai báo một giao diện, từ khóa interface được sử dụng. Đây là cú pháp để khai báo một giao diện:
interface interface-name { //abstract methods }
Ví dụ:
//Filename: NameOfInterface.java import java.lang.*; // Any number of import statements interface NameOfInterface { // Any number of final, static fields // Any number of abstract method declarations }
Ví dụ:
interface Animal { public void eat(); public void travel(); }
>>> Đọc thêm: Reflection trong Java – Tìm hiểu về Reflection trong Java trong 5 phút
Marker (hay Tagging) Interface trong Java là gì?
Đó là một Interface mà không có thành viên nào. Ví dụ: Serializable, Cloneable, Remote, … Chúng được sử dụng để cung cấp một số thông tin thiết yếu tới JVM để mà JVM có thể thực hiện một số hoạt động hữu ích.
public interface Serializable { }
Có hai mục đích thiết kế chủ yếu của tagging interface là:
- Tạo một cha chung: Như với EventListener interface, mà được kế thừa bởi hàng tá các interface khác trong Java API, bạn có thể sử dụng một tagging interface để tạo một cha chung cho một nhóm interface. Ví dụ, khi một interface kế thừa EventListener, thì JVM biết rằng interface cụ thể này đang được sử dụng trong một event.
- Thêm một kiểu dữ liệu tới một class: Đó là khái niệm tagging. Một class mà triển khai một tagging interface không cần định nghĩa bất kỳ phương thức nào, nhưng class trở thành một kiểu interface thông qua tính đa hình (polymorphism).
Tải xuống
Tài liệu
Nhằm phục vụ mục đích học tập Offline của cộng đồng, Kteam hỗ trợ tính năng lưu trữ nội dung bài học Interface trong lập trình hướng đối tượng Java dưới dạng file PDF trong link bên dưới.
Ngoài ra, bạn cũng có thể tìm thấy các tài liệu được đóng góp từ cộng đồng ở mục TÀI LIỆU trên thư viện Howkteam.com
Đừng quên like và share để ủng hộ Kteam và tác giả nhé!
Đa kế thừa trong Java bởi Interface
Nếu một lớp triển khai đa kế thừa, hoặc một Interface kế thừa từ nhiều Interface thì đó là đa kế thừa.
interface Printable { void print(); } interface Showable{ void show(); } class A7 implements Printable,Showable { public void print() { System.out.println(“Hello”); } public void show() { System.out.println(“Welcome”); } public static void main(String args[]){ A7 obj = new A7(); obj.print(); obj.show(); } }
Câu hỏi: Đa kế thừa không được hỗ trợ thông qua lớp trong Java nhưng là có thể bởi Interface, tại sao?
Như đa thảo luận trong chương về tính kế thừa, đa kế thừa không được hỗ trợ thông qua lớp. Nhưng nó được hỗ trợ bởi Interface bởi vì không có tính lưỡng nghĩa khi trình triển khai được cung cấp bởi lớp Implementation. Ví dụ:
interface Printable{ void print(); } interface Showable{ void print(); } class TestTnterface1 implements Printable,Showable{ public void print() { System.out.println(“Hello”); } public static void main(String args[]) { TestTnterface1 obj = new TestTnterface1(); obj.print(); } }
Trong ví dụ trên, Printable và Showable interface có cùng các phương thức nhưng trình triển khai của nó được cung cấp bởi lớp TestInterface1, vì thế không có tính lưỡng nghĩa ở đây.
Tìm hiểu về Interface là gì?
Là một phần trong java – bản thiết kế để người dùng khắc phục các tình trạng không đa thừa kế được. Kết hợp các lớp bình thường với abstract class là đại diện biểu diễn cho chính quan hệ IS-A trong java. Lúc thực hiện thì người dùng sử dụng 1 abstract class triển khai được 1 interface.
Nghĩa tiếng Việt của Interface là giao diện
Interface và Abstract chính là 2 khái niệm mà người dùng hay nhầm lẫn nhất trong khi triển khai lập trình OOP – Object Oriented Programming (Lập trình hướng đối tượng). Trong khi đó, khái niệm này được dùng khá phổ biến trong lập trình website, chủ yếu xuất hiện trong 2 lập trình web trong PHP hướng đối tượng và Java.
Trong PHP hướng đối tượng, Interface có nghĩa là giao thức hoặc giao diện. Phương tiện được dùng để hỗ trợ các đối tượng không có liên quan về giao tiếp và tương tác với nhau.
Trong Java là 1 ngôn ngữ lập trình hướng đối tượng và dựa trên các class. Bên cạnh đó, nó cũng chính là 1 bản thiết kế của một lớp ở trong Java. Trường hợp này chỉ chứa các phương thức trừu tượng.
Sử dụng nó như kỹ thuật để thu được tính trừu tượng hoàn toàn và đa kế thừa trong Java. Song song với đó thì interface được dùng để hỗ trợ biểu diễn mối quan hệ IS-A.
Tuy nhiên, nó không được dùng để khởi tạo giống như một lớp trừu tượng. Tùy vào nhu cầu sử dụng của từng người khác nhau mà lựa chọn lập trình theo mục đích của mình. Có 1 điều chắc chắn rằng, bạn sẽ thấy nó khá giúp ích cho công việc của mình.
Mức độ ưu tiên phương thức.
Mức độ ưu tiên trong interface về cơ bản thì cũng giống như class.
Trong Java các method được khai báo trong class sẽ được ưu tiên hơn trong interface.
VD: Mình có khai báo các class và inteface như sau
–
XeInterface
public interface XeInterface { default void print() { System.out.println("This is XeInterface"); } }
– class
Xe.java
public class Xe { public void print() { System.out.println("This is Xe"); } }
– class
XeDap.java
public class XeDap extends Xe implements XeInterface { // code }
– class
Main.java
public class Main { public static void main(String[] args) { XeDap xeDap = new XeDap(); xeDap.print(); } }
Kết quả:
This is Xe
Như các bạn đã thấy, method print được khai báo trong class
Xe
sẽ được ưu tiên hơn so với interface
XeInterface
.
Để gọi phương thức đã bị ghi đè trong interface chúng ta cũng sử dụng từ khóa
super
, nhưng trước đó chúng ta cần xác định thêm interface name phía trước nó để Java hiểu được bạn cần gọi method của interface nào.
VD:
–
XeInterface
public interface XeInterface { default void print() { System.out.println("This is XeInterface"); } }
– class
Xe.java
public class Xe implements XeInterface { public void print() { XeInterface.super.print(); System.out.println("This is Xe"); } }
– class
Main.java
public class Main { public static void main(String[] args) { XeDap xeDap = new XeDap(); xeDap.print(); } }
Kết quả:
This is XeInterface This is Xe
Interface là gì? Tại sao phải sử dụng?
Interface là một kiểu dữ liệu tham chiếu trong Java. Nó là tập hợp các phương thức abstract (trừu tượng). Khi một lớp kế thừa interface, thì nó sẽ kế thừa những phương thức abstract của interface đó.
Một số đặc điểm của interface:
- Không thể khởi tạo, nên không có phương thức khởi tạo.
- Tất cả các phương thức trong interface luôn ở dạng public abstract mà không cần khai báo.
- Các thuộc tính trong interface luôn ở dạng public static final mà không cần khai báo, yêu cầu phải có giá trị.
Mục đích của interface là để thay thế đa kế thừa lớp của những ngôn ngữ khác (ví dụ như C++, Python…). Ngoài ra, interface sẽ giúp đồng bộ và thống nhất trong việc phát triển hệ thống trao đổi thông tin.
Một Interface trong Java là một bản thiết kế của một lớp. Nó chỉ có các phương thức trừu tượng. Interface là một kỹ thuật để thu được tính trừu tượng hoàn toàn và đa kế thừa trong Java. Interface trong Java cũng biễu diễn mối quan hệ IS-A. Nó không thể được khởi tạo giống như lớp trừu tượng.
Nói cách khác, các trường của Interface là public, static và final theo mặc định và các phương thức là public và abstract.
Một Interface trong Java là một tập hợp các phương thức trừu tượng (abstract). Một class triển khai một interface, do đó kế thừa các phương thức abstract của interface.
Một interface không phải là một lớp. Viết một interface giống như viết một lớp, nhưng chúng có 2 định nghĩa khác nhau. Một lớp mô tả các thuộc tính và hành vi của một đối tượng. Một interface chứa các hành vi mà một class triển khai.
Trừ khi một lớp triển khai interface là lớp trừu tượng abstract, còn lại tất cả các phương thức của interface cần được định nghĩa trong class.
Một interface tương tự với một class bởi những điểm sau đây:
- Một interface được viết trong một file với định dạng .java, với tên của interface giống tên của file.
- Bytecode của interface được lưu trong file có định dạng .class.
- Khai báo interface trong một package, những file bytecode tương ứng cũng có cấu trúc thư mục có cùng tên package.
Một interface khác với một class ở một số điểm sau đây:
- Bạn không thể khởi tạo một interface.
- Một interface không chứa bất cứ hàm Contructor nào.
- Tất cả các phương thức của interface đều là abstract.
- Một interface không thể chứa một trường nào trừ các trường vừa static và final.
- Một interface không thể kế thừa từ lớp, nó được triển khai bởi một lớp.
- Một interface có thể kế thừa từ nhiều interface khác.
Nội dung chính
Nội dung
Để đọc hiểu bài này, tốt nhất các bạn nên có kiến thức cơ bản về các phần sau:
- CÁC BIẾN TRONG JAVA.
- CÁC KIỂU DỮ LIỆU TRONG JAVA.
- CÁC HẠNG TOÁN TỬ TRONG JAVA
- CẤU TRÚC RẼ NHÁNH TRONG JAVA
- VÒNG LẶP WHILE TRONG JAVA
- VÒNG LẶP FOR TRONG JAVA
- MẢNG TRONG JAVA
- VÒNG LẶP FOR-EACH TRONG JAVA
- VAI TRÒ BREAK, CONTINUE TRONG VÒNG LẶP JAVA
- SWITCH TRONG JAVA
- LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
- CLASS TRONG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
- CÁC LOẠI PHẠM VI TRUY CẬP TRONG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
- TỪ KHÓA STATIC TRONG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
- TỪ KHÓA THIS TRONG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
- THỪA KẾ TRONG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
- SETTER & GETTER TRONG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
- OVERRIDING VÀ OVERLOADING TRONG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
- TÍNH TRỪU TƯỢNG TRONG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Bài này chúng ta sẽ tìm hiểu những vấn đề sau:
- Interface là gì? Tại sao phải sử dụng?
- Khai báo và sử dụng interface
Tại sao chúng ta cần Interface
Lý do chính là Java không hỗ trợ đa kế thừa. Do đó, bạn không thể kế thừa cùng một lúc nhiều class. Các class con không thể kế thừa các thuộc tính của nhiều class cha, vì nó dẫn đến bài toán Kim Cương (các bạn search Google để biết cái này nhé).
Để giải quyết vấn đề này, người ta mới cho ra đời Interface. Để hiểu rõ hơn, chúng ta sẽ cùng nhau xem ví dụ dưới đây.
Bạn muốn thiết kế một Sở thú, gồm rất nhiều các con vật. Về cơ bản thì các con vật đều có các đặc điểm chung như: Có tên, có tiếng kêu, có chân (2 chân, 4 chân, hoặc 0 có chân nào…). Từ những đặc điểm chung đó bạn tạo một abstract class là:
abstract class Animal
Tuy nhiên lại có một số loài lại biết bay, một số loài thì biết bơi. Và cái “dở” là loài biết bay lại không biết bơi. Do vậy, ta không thể để đặc điểm biết bay hay biết bơi trong class Animal được.
Đó là lý do chúng ta cần tạo 2 Interface khác nhau là Can_Fly và Can_Swim rồi xem class nào có thể implements từng cái thích hợp.
Tham khảo việc làm Java mới nhất trên TopDev
Interface trong Java – Giao diện trong Java
Trong Java, giao diện là một bản thiết kế hoặc mẫu của một lớp. Nó tương tự như lớp Java nhưng sự khác biệt duy nhất là nó có các phương thức trừu tượng và các hằng số tĩnh. Chỉ có thể có các phương thức trừu tượng trong một giao diện, tức là không có body method nào bên trong các phương thức trừu tượng này. Lớp thực thi giao diện nên là lớp trừu tượng, nếu không, chúng ta sẽ cần xác định tất cả các phương thức của giao diện trong lớp.
Các điểm quan trọng về Interface trong Java:
- Giao diện là một trong những khái niệm cốt lõi của lập trình Java được sử dụng chủ yếu trong các mẫu thiết kế Java.
- Một giao diện cung cấp thông số kỹ thuật về những gì một lớp nên làm hay không và cách nó nên làm. Một giao diện trong Java về cơ bản có một tập hợp các phương thức mà lớp có thể áp dụng hoặc không.
- Nó cũng có khả năng thực hiện một chức năng. Các phương thức trong giao diện không chứa bất kỳ phần thân nào.
- Các phương thức trừu tượng này được thực hiện bởi các lớp trước khi truy cập chúng.
- Một giao diện trong Java là một cơ chế mà chúng tôi chủ yếu sử dụng để đạt được tính trừu tượng và đa kế thừa trong Java.
- Một giao diện cung cấp một tập hợp các đặc tả mà các lớp khác phải thực hiện.
- Chúng ta có thể triển khai nhiều Giao diện Java bởi một lớp Java. Tất cả các phương thức của một giao diện là hoàn toàn công khai và trừu tượng. Từ trừu tượng có nghĩa là các phương thức này không có thân phương thức, chỉ có ký hiệu phương thức.
- Giao diện Java cũng đại diện cho mối quan hệ kế thừa IS-A giữa hai lớp.
- Một giao diện có thể kế thừa hoặc mở rộng nhiều giao diện.
- Chúng ta có thể triển khai nhiều hơn một giao diện trong lớp của mình.
>>> Đọc thêm: Tìm hiểu sự khác biệt giữa Java và Python: những khác biệt nổi bật
Mục đích sử dụng interface
Việc sử dụng nó mang lại nhiều lợi ích thiết thực cho người dùng, cụ thể như sau:
-
Interface được sử dụng như giao diện với thế giới bên ngoài được các abstract class trợ giúp. Sản phẩm này sinh ra để phục vụ cho sự tương tác này nhạy hơn
-
Một abstract class sử dụng thực thi một interface, do đó các phương thức người dùng sẽ khai bảo bởi interface phải hiển thị trong cùng lớp để biên dịch hiệu quả
-
Dù thực thi được nhiều giao diện khi dùng như 1 lớp interface chỉ kế thừa được từ 1 lớp khác
-
Sử dụng interface để định nghĩa về sự tương tác giữa người sử dụng và phần mềm của họ
Được sử dụng như 1 giao diện và được trợ giúp bởi Abstract Class
Interface trong Java.
Trong Java interface là một kiểu dữ liệu tham chiếu (reference type), giống như class. Nó cho phép chúng ta định nghĩa hằng số, tên phương thức, phương thức tĩnh, và phương thức default.
Đối với phương thức tĩnh và phương thức default thì chúng ta có thể khai báo chúng như đối với class thường (có code logic bên trong).
Để khai báo một interface chúng ta sử dụng cú pháp sau:
access_modifier interface Name { // code }
Trong đó:
-
assess_modifier
là phạm vi truy cập của interface.
assess_modifier
sẽ là 1 trong 4 giá trị sau:
public
,
protected
,
private
,
default
hoặc bỏ trống. -
Name
là tên của interface.
VD: Định nghĩa interface
XeInterface
.
public interface XeInterface { void setSoBanh(int soBanh); int getSoBanh(); void setTocDo(int tocDo); int getTocDo(); public static void Print(String message) { System.out.println(message); } }
Interface cũng có thể kế thừa một hoặc nhiều interface khác với cú pháp tương tự như đối với class.
VD: Kế thừa interface.
public interface XeInterface { // code } public interface XeDapInterface extends XeInterface { // code } public interface XeDienInterface extends XeInterface { // code } public interface XeDapDienInterface extends XeDapInterface, XeDienInterface { // code }
Trong ví dụ trên mình đã khai báo interface
XeDapInterface
kế thừa
XeInterface
và
XeDienInterface
kế thừa
XeInterface
. Rồi tiếp đó mình lại khai báo
XeDapDienInterface
kế thừa
XeDapInterface
và
XeDienInterface
.
Dùng interface như một kiểu dữ liệu.
Như ở phía trên mình có nói interface là một kiểu dữ liệu tham chiếu nên khi các bạn khai báo một class có implement interface thì chúng ta hoàn toàn có thể khởi tạo đối tượng đó với kiểu dữ liệu là interface đó.
VD: Khởi tạo class
Xe
ở trên với kiểu dữ liệu là interface
XeInterface
.
public class Main { public static void main(String[] args) { XeInterface xe = new Xe(); } }
Khi một class có implement interface thì khi check instanceof object đó với interface thì kết quả vẫn sẽ trả về true.
VD:
public class Main { public static void main(String[] args) { Xe xe = new Xe(); if (xe instanceof XeInterface) { System.out.println("Xe instanceof XeInterface"); } } }
Giao diện lồng nhau
Giao diện được khai báo bên trong giao diện hoặc lớp khác được gọi là giao diện lồng nhau hoặc giao diện bên trong.
Không thể truy cập trực tiếp Giao diện lồng nhau. Chúng ta chủ yếu sử dụng giao diện lồng nhau để giải quyết vùng tên bằng cách nhóm các giao diện liên quan hoặc các giao diện và lớp có liên quan lại với nhau. Chúng tôi sử dụng tên của lớp bên ngoài hoặc giao diện bên ngoài theo sau là dấu chấm (.), Theo sau là tên giao diện để gọi giao diện lồng nhau.
Kết luận: Giao diện là bản thiết kế của các lớp nhưng không hoàn toàn giống với các lớp. Cả hai đều khác nhau về nhiều mặt. Qua bài viết này, hy vọng bạn có thể hiểu rõ về Interface trong Java và ứng dụng được Interface trong quá trình làm việc. Tìm hiểu thêm về Java và các ngôn ngữ lập trình khác qua các khóa học lập trình tại Viện công nghệ thông tin T3H.
Nguồn: techvidvan
Bạn thực sự đã biết khi nào dùng Interface khi nào dùng Abstract?
Bài đăng này đã không được cập nhật trong 4 năm
Nguồn: loda.me
Tổng quan
Trong java, chúng ta có
class
abstract
và một
Interface
, ai cũng biết một class có thể
impements
nhiều
Interface
và chỉ kế thừa được một
class
abstract
. Nhưng bạn thực sự đã biết khi nào thì ta dùng
Interface
, khi nào dùng
Abstract
. Chưa kể bắt đầu từ Java 8 có sự thay đổi về
Interface
càng làm khó phân biệt giữa hai loại này.
Trong bài viết này chúng tôi sẽ đi so sánh một số tính chất của 2 loại này, sau đó là đưa ra ví dụ đơn giải để các bạn hình dung rõ nhất. Cuối cùng là hiểu khi nào thì dùng chúng.
Sự khác nhau giữa Interface và Abstract
-
Methods: Class
abstract
có các phương thức abstract và non-abstract. Trong khi
Interface
chỉ có phương thức abstract, từ Java 8, thì Interface có thêm 2 loại phương thức là
default
và
static
. -
Variables: Class
abstract
có thể có các biến final, non-final, static và non-static. Trong khi
Interface
chỉ có các biến static và final. -
Implementation: Class
abstract
có thể implement các Interface. Trong khi
Interface
thì không thể implement class abstract. -
Inheritance: Class
abstract
có thể kế thừa được một class khác. Trong khi
Interface
có thể kế thừa được nhiều Interface khác. -
Accessibility: các thành viên trong
Interface
kiếu mặc định là
public
. Trong khi class
abstract
thì lại có thể là private, protected,..
Nguồn: https://loda.me – còn nhiều cái hay ho lắm!
Abstract là gì?
Abstract(trừu tượng) nghĩa là một cái gì đó không hoàn toàn cụ thể, nó chỉ là một ý tưởng hoặc ý chính của một cái gì đó mà không có bản triển khai cụ thể. Vì vậy Class abstract chỉ là một cấu trúc hoặc hướng dẫn được tạo cho các class cụ thể khác.
Chúng ta có thể nói rằng một class abstract là linh hồn của một class cụ thể, và rõ ràng một cơ thể (class) không thể có hai linh hồn. Đây cũng là lý do Java không hỗ trợ nhiều kế thừa cho các class abstract.
Hãy nhìn vào class abstract sau: Xe.class
public abstract class Xe { private String dongCo; abstract void khoiDongDongCo(); abstract void dungDongco(); }
Chúng tôi tạo một class abstract
Xe
có thuộc tính là
động cơ
, và các phương thức khởi động/ dừng động cơ.
Xe
là một cái gì đó không cụ thể, nó có thể là ô tô, xe máy, … và rõ ràng không có
Xe
nào mà không tồn tại động cơ và cơ chế khởi động/dừng động cơ cả.
Oto.class
public class Oto extends Xe { @Override void khoiDongDongCo() { System.out.println("Khởi động động cơ của ôtô"); } @Override void dungDongco() { System.out.println("Dừng động cơ của ôtô"); } }
Interface là gì?
Interface (Giao diện) là một hình thức, giống như một hợp đồng, nó không thể tự làm bất cứ điều gì. Nhưng khi có một class ký kết hợp đồng (implement Interface) này, thì class đó phải tuân theo hợp đồng này.
Trong Interface, chúng tôi định nghĩa các hành vi của một class sẽ thực hiện. Một class có thể có một số cách hành vi khác nhau, cũng giống như nó có thể ký kết được với nhiều hợp đồng khác nhau. Đó cũng là lý do tại sao Java cho phép implement nhiều Interface.
Tiếp nối ví dụ trên,
Xe
có thể di chuyển, vì vậy chúng tôi tạo một Interface Hành động di chuyển và class
Oto
implement nó.
HanhDongDiChuyen.class
public interface HanhDongDiChuyen { void diChuyen(); }
Đây là những hành vi của
Oto
, chứ không thuộc tính sẵn có của nó: Ôtô là xe hơi, ngay cả khi nó không thể di chuyển được!
Oto.class
public class Oto extends Xe implements HanhDongDiChuyen{ @Override void khoiDongDongCo() { System.out.println("Khởi động động cơ của ôtô"); } @Override void dungDongco() { System.out.println("Dừng động cơ của ôtô"); } @Override public void diChuyen() { System.out.println("Ôtô đang di chuyển"); } }
Khi nào nên dùng?
- Class abstract đại diện cho mối quan hệ “IS – A” (Ôtô là Xe)
- Interface đại diện cho mối quan hệ “like – A” (Ô tô có thể chuyển động).
- Tạo một class abstract khi bạn đang cung cấp các hướng dẫn cho một class cụ thể.
- Tạo Interface khi chúng ta cung cấp các hành vi bổ sung cho class cụ thể và những hành vì này không bắt buộc đối với clas đó.
Kết luận
Mục đích của bài viết này là để giúp bạn hiểu và nắm vững class abstract, Interface và kịch bản sử dụng. Thông qua nổ lực toàn bộ bài viết của chúng tôi, chúng tôi tin chắc rằng bạn đã hiểu được điều gì đó . Cuối cùng, cảm ơn bạn đã đọc bài viết.
All rights reserved
Thảo luận
Nếu bạn có bất kỳ khó khăn hay thắc mắc gì về khóa học, đừng ngần ngại đặt câu hỏi trong phần bên dưới hoặc trong mục HỎI & ĐÁP trên thư viện Howkteam.com để nhận được sự hỗ trợ từ cộng đồng.
Nội dung bài viết
Khóa học
Lập trình Java cơ bản đến hướng đối tượng
Với mục đích giới thiệu đến mọi người về Ngôn ngữ Java – một ngôn ngữ lập trình khá mới mẻ so với C, C++, Java, PHP ở Việt Nam.
Thông qua khóa học LẬP TRÌNH JAVA CƠ BẢN ĐẾN HƯỚNG ĐỐI TƯỢNG, Kteam sẽ hướng dẫn các bạn kiến thức cơ bản của Java. Để từ đó, có được nền tảng cho phép bạn tiếp tục tìm hiểu những kiến thức tuyệt vời khác của Java hoặc là một ngôn ngữ khác.
Cụ thể trong khóa học này, Kteam sẽ giới thiệu với các bạn Java ở phiên bản Java 8
Đánh giá
Bình luận
Nếu phỏng vấn người ta hỏi “Vì sao mỗi lớp con chỉ được có 1 lớp cha” thì trả lớp thế nào ạ
Nếu phỏng vấn người ta hỏi “Vì sao mỗi lớp con chỉ được có 1 lớp cha” thì trả lớp thế nào ạ
Nếu phỏng vấn người ta hỏi “Vì sao mỗi lớp con chỉ được có 1 lớp cha” thì trả lớp thế nào ạ
Nếu phỏng vấn người ta hỏi “Vì sao mỗi lớp con chỉ được có 1 lớp cha” thì trả lớp thế nào ạ
Bài viết được sự cho phép của tác giả Sơn Dương
Trong một lần tình cờ vào VOZ forums, có một bạn hỏi về Interface trong Java là gì? Nó khác với Abstract Class chỗ nào? Tại sao phải dùng Interface, mặc dù nó chẳng rút gọn code đi tý nào, thậm chí còn dài hơn. Mặc dù có nhiều bạn trả lời cho chủ topic đó nhưng hầu hết là hiểu sai, hoặc chưa hiểu rõ bản chất của Interface trong Java.
Để các bạn có cái nhìn thấu đáo, hiểu rõ bản chất của Interface. 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 bài viết này.
Lời kết.
Interface xuất hiện ở mọi nơi trong Java, chính vì vậy mọi người nên để ý hơn về phần này.
Đăng ký nhận tin.
Chúng tôi chỉ gửi tối đa 2 lần trên 1 tháng. Tuyên bố không spam mail!
Interface trong Java – Tìm hiểu về giao diện trong Java
04/08/2021 01:33
Giao diện là một trong những thứ chúng ta tiếp xúc thường xuyên nhất, từ những màn hình điện thoại để lướt mạng xã hội hay những màn hình máy ATM đến những biển hiệu điện tử để quảng cáo. Đây điều là những thứ quen thuộc, hiện diện trực tiếp hoặc gián tiếp trong đời sống của chúng ta. Nếu xét từ khía cạnh lập trình, một giao diện sẽ nằm giữa hai thành phần phần mềm. Chúng ta luôn sử dụng các giao diện trong chương trình nhưng không biết chính xác ý nghĩa và cách sử dụng của giao diện này. Trong bài viết hôm nay, T3H sẽ cùng các bạn tìm hiểu về khái niệm Interface trong Java hay còn gọi là giao diện trong Java.
Đặc điểm chính của Java Interface
Bạn đọc đến chắc cũng đã hiểu phần nào về Interface trong Java rồi đúng không? Khi nào thì cần phải sử dụng Interface, và nó khác với Class thường chỗ nào.
Giờ mình sẽ tổng kết lại những đặc điểm chính mà bạn cần phải nhớ về Interface:
- Các method được khai báo trong Interface phải là method rỗng.
- Không thể tạo đối tượ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 mình họa cho đỡ nhàm chá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 to 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 sẽ thu được kết quả:
implementation of method1 Enter number to find square root in Java : 16 Square root of number: 16.0 is : 4.0
Tổng kết
Như vậy là mình đã hoàn thành bài viết về Interface trong Java. Đọc đến đây, bạn đã “vỡ” ra được nhiều điều không? Nếu không thì… buồn ghê.
Các bạn nên nhớ, Interface chỉ là một công cụ, nó không phải là triết lý lập trình. Do vậy, khi ai đó nói tới lập trình hướng đối tượng, tới đa hình mà nói: Tính đa hình là interface. Thì không hẳn là đúng nhé. Nhớ này: Interface chỉ là một công cụ để thực hiện tính đa hình.
Bài viết gốc được đăng tải tại vntalking.com
Có thể bạn quan tâm:
- Cách xây dựng ThreadLocal trong Java
- REST Web service: Tạo ứng dụng Java RESTful Client với Jersey Client 2.x
- Tránh lỗi ConcurrentModificationException trong Java như thế nào?
Xem thêm công việc CNTT hấp dẫn trên TopDev
Java Interfaces
Người dịch: Nguyễn Thành Trung – Học viên lớp Java08
Email liên hệ: [email protected]ài viết gốc: https://www.baeldung.com/java-interfaces
Tổng quan
Trong bài này, chúng ta sẽ nói về các interface trong Java. Chúng ta cũng sẽ xem cách Java sử dụng chúng để triển khai tính đa hình và nhiều tính kế thừa.
Interface trong Java là gì?
Trong Java, interface là một kiểu trừu tượng chứa một tập hợp các phương thức và các biến hằng số. Nó là một trong những khái niệm cốt lõi trong Java và được sử dụng để đạt được tính trừu tượng, đa hình và đa kế thừa .
Hãy xem một ví dụ đơn giản về interface trong Java:
public interface Electronic { // Constant variable String LED = "LED"; // Abstract method int getElectricityUse(); // Static method static boolean isEnergyEfficient(String electtronicType) { if (electtronicType.equals(LED)) { return true; } return false; } //Default method default void printDescription() { System.out.println("Electronic Description"); } }
Chúng ta có thể triển khai một interface trong một lớp Java bằng cách sử dụng từ khóa implements.
Tiếp theo, hãy cũng tạo một lớp Computer thực hiện Electronic interface mà chúng ta vừa tạo:
public class Computer implements Electronic { public int getElectricityUse() { return 1000; } }
2.Quy tắc tạo Interface
Trong một interface, chúng ta được phép sử dụng:
- Biến hằng số
- Phương thức trừu tượng
- Phương thức static
- Phương thức mặc dịnh
Chúng ta cũng nên nhớ rằng:
- Chúng ta không thể khởi tạo interface trực tiếp.
- Một interface có thể rỗng, không có phương thức hoặc biến trong đó.
- Chúng ta không thể sử dụng final trong định nghĩa interface, vì nó sẽ dẫn đến lỗi trình biên dịch.
- Tất cả các khai báo interface phải có public hoặc default access modifier; abstract modifier sẽ được trình biên dịch tự động thêm vào.
- Một phương thức interface không thể protected hoặc final.
- Trước Java 9, các phương thức interface không thể là private, tuy nhiên, Java 9 đã giới thiệu khả năng xác định private methods trong interface.
- Các biến interface là public, static và final theo định nghĩa; chúng ta không được phép thay đổi khả năng hiển thị của chúng.
Chúng ta có thể đạt được gì bằng cách sử dụng chúng?
3.Chức năng hành vi
Chúng ta sử dụng các interface để thêm chức năng hành vi nhất định có thể được sử dụng bởi các lớp không liên quan. Ví dụ: Có thể Comparable, Comparator, and Cloneable là các Java interface có thể được thực hiện bởi các lớp không liên quan. Dưới đây là một ví dụ về Comparator interface được sử dụng để so sánh hai phiên bản của lớp Employee:
public class Employee { private double salary; public double getSalary() { return salary; } public void setSalary(double salary) { this.salary = salary; } } public class EmployeeSalaryComparator implements Comparator
{ public int compare(Employee employeeA, Employee employeeB) { if (employeeA.getSalary() < employeeB.getSalary()) { return -1; } else if (employeeA.getSalary() > employeeB.getSalary()) { return 1; } else { return 0; } } }
Để biết thêm thông tin, vui lòng truy cập hướng dẫn về Comparator và Comparable trong Java.
3.Đa kế thừa
Các lớp Java hỗ trợ đơn kế thừa. Tuy nhiên, bằng cách sử dụng các interface, chúng ta cũng có thể triển khai đa kế thừa.
Ví dụ, chúng ta nhận thấy rằng lớp Car thực hiện các interface Fly và Transform. Bằng cách đó, nó kế thừa các phương thức Fly và Trasform:
public interface Transform { void transform(); } public interface Fly { void fly(); } public class Car implements Fly, Transform { public void fly() { System.out.println("I can Fly!!"); } public void transform() { System.out.println("I can Transform!!"); } }
3.Tính đa hình
Hãy bắt đầu với việc đặt câu hỏi: tính đa hình là gì? Đó là khả năng một đối tượng có các dạng khác nhau trong runtime. Cụ thể hơn, đó là việc thực thi phương thức ghi đè có liên quan đến một loại đối tượng cụ thể trong runtime.
Trong Java, chúng ta có thể đạt được tính đa hình bằng cách sử dụng các interface. Ví dụ: Shape interface có thể có các dạng khác nhau – nó có thể là Hình tròn hoặc Hình vuông.
Hãy bắt đầu bằng cách xác định Shape interface:
public interface Shape { String name(); }
Bây giờ chúng ta cũng tạo lớp Circle:
public class Circle implements Shape { public String name() { return "Circle"; } }
Và cả lớp Square:
public class Square implements Shape { public String name() { return "Square"; } }
Cuối cùng, đã đến lúc để xem tính đa hình hoạt động bằng cách sử dụng Shape interface của chúng ta và các triển khai của nó. Hãy khởi tạo một số đối tượng Shape, thêm chúng vào List và cuối cùng, in tên của chúng trong một vòng lặp:
List
shapes = new ArrayList<>(); Shape circleShape = new Circle(); Shape squareShape = new Square(); shapes.add(circleShape); shapes.add(squareShape); for (Shape shape : shapes) { System.out.println(shape.name()); }
Phương thức mặc định trong interface
Các interface truyền thống trong Java 7 trở xuống không cung cấp khả năng tương thích ngược.
Điều này có nghĩa là nếu bạn có mã kế thừa được viết bằng Java 7 hoặc phiên bản cũ hơn và bạn quyết định thêm một phương thức trừu tượng vào một interface hiện có, thì tất cả các lớp triển khai giao diện đó phải ghi đè phương thức trừu tượng mới. Nếu không, mã sẽ bị hỏng.
Java 8 đã giải quyết vấn đề này bằng cách giới thiệu phương thức mặc định là tùy chọn và có thể được thực hiện ở cấp giao diện.
Quy tắc kế thừa interface
Để đạt được đa thừa kế thông qua các giao diện, chúng ta phải nhớ một số quy tắc. Chúng ta hãy xem xét những điều này một cách chi tiết.
5.Interface Extending Another Interface
Khi một interface mở rộng một interface khác, nó sẽ kế thừa tất cả các phương thức trừu tượng của interface đó. Hãy bắt đầu bằng cách tạo hai interface, HasColor và Shape:
public interface HasColor { String getColor(); } public interface Box extends HasColor { int getHeight() }
Trong ví dụ trên, Box kế thừa từ HasColor bằng cách sử dụng từ khóa extends. Bằng cách làm như vậy, Box interface kế thừa getColor . Kết quả là Box interface bây giờ có hai phương thức: getColor và getHeight.
5.Lớp trừu tượng triển khai một interface
Khi một lớp trừu tượng triển khai một interface, nó sẽ kế thừa tất cả các phương thức trừu tượng và mặc định của nó. Hãy xem xét Transform interface và lớp trừu tượng Vehicle thực hiện nó:
public interface Transform { void transform(); default void printSpecs(){ System.out.println("Transform Specification"); } } public abstract class Vehicle implements Transform {}
Trong ví dụ này, lớp Vehicle kế thừa hai phương thức: phương thức transform trừu tượng và phương thức printSpecs mặc định.
Functional Interfaces
Java đã có Functional Interfaces kể từ những ngày đầu tiên của nó, chẳng hạn như có thể so sánh được (kể từ Java 1.2) và Runnable (kể từ Java 1.0).
Java 8 đã giới thiệu các Functional Interfaces mới như Predicate, Consumer và Function. Để tìm hiểu thêm về những điều này, vui lòng truy cập hướng dẫn của chúng tôi về Functional Interfaces trong Java 8.
Kết luận
Trong hướng dẫn này, chúng ta đã có cái nhìn tổng quan về các Java Interface và cách sử dụng chúng để đạt được tính đa hình và tính đa kế thừa.
Interface là gì? Mục đích sử dụng của Interface
Những người quan tâm tới lập trình rất quan tâm tới khái niệm Interface là gì. Để tóm tắt, cô đọng được điều này thì phải thực sự am hiểu về lập trình. Trong bài viết dưới đây chúng ta sẽ cùng đồng hành với Hcare phân tích Interface và cách sử dụng nó nên hãy cùng theo dõi hết nhé.
Ví dụ đơn giản về Interface trong Java
Trong ví dụ này, Printable Interface chỉ có một phương thức, trình triển khai của nó được cung cấp bởi lớp A.
interface printable { void print(); } class A6 implements printable { public void print() { System.out.println(“Hello”); } public static void main(String args[]){ A6 obj = new A6(); obj.print(); } }
Khi ghi đè các phương thức được định nghĩa trong interface, có một số qui tắc sau:
- Các checked exception không nên được khai báo trong phương thức implements, thay vào đó nó nên được khai báo trong phương thức interface hoặc các lớp phụ được khai báo bởi phương thức interface.
- Signature (ký số) của phương thức interface và kiểu trả về nên được duy trì khi ghi đè phương thức (overriding method).
- Một lớp triển khai chính nó có thể là abstract và vì thế các phương thức interface không cần được triển khai.
Khi triển khai interface, có vài quy tắc sau:
Thực thi (implement) interface.
Khi thực thi (implement) một interface thì chúng ta cần phải Override lại các phương thức đã được định nghĩa tên ở interface (chỉ những phương thức thường). Và kiểu dữ liệu trả về của phương thức phải giống với kiểu dữ liệu trả về đã được khai báo ở interface, tham số truyền vào phương thức cũng phải có kiểu dữ liệu giống như đã khai báo trong interface.
Để thực thi một interface thì chúng ta sử dụng từ khóa
implements
sau tên class khi định nghĩa. Và cũng giống như interface thì một class có thể thực thi nhiều interface với cú pháp tương tự với interface.
VD: Mình sẽ thực thi lại
XeInterface
ở ví dụ trên.
–
XeInterface
:
public interface XeInterface { void setSoBanh(int soBanh); int getSoBanh(); void setTocDo(int tocDo); int getTocDo(); public static void print(String message) { System.out.println(message); } }
– class
Xe.java
:
public class Xe implements XeInterface { private int soBanh; private int tocDo; @Override public void setSoBanh(int soBanh) { this.soBanh = soBanh; } @Override public int getSoBanh() { return soBanh; } @Override public void setTocDo(int tocDo) { this.tocDo = tocDo; } @Override public int getTocDo() { return tocDo; } }
Như các bạn đã thấy thì ở class
Xe
mình phải định nghĩa lại toàn bộ phương thức thường đã được khai báo tên ở trong
XeInterface
, nếu không định nghĩa lại thì trình biên dịch sẽ báo lỗi. Riêng đối với phương thức
default
và
static
method thì các bạn không cần phải định nghĩa lại.
Keywords searched by users: interface trong java để làm gì
Categories: Tóm tắt 42 Interface Trong Java Để Làm Gì
See more here: kientrucannam.vn
See more: https://kientrucannam.vn/vn/