Khi lập trình bằng Java, chúng ta thường gặp phải câu hỏi về sự khác biệt giữa extends
và implements
. Hai từ khóa này được sử dụng rất phổ biến, nhưng nhiều lập trình viên mới vẫn chưa rõ sự khác biệt cụ thể. Bài viết này sẽ giúp bạn hiểu rõ hơn về vấn đề này.
Sử dụng extends
như thế nào?
extends
được sử dụng để kế thừa từ một class khác trong Java. Khi một lớp con kế thừa từ một lớp cha, nếu có hai phương thức cùng tên giữa lớp cha và lớp con, phương thức của lớp con sẽ được ưu tiên gọi.
Ví dụ:
class A {
public void show() {
System.out.println("show");
}
}
class B extends A {
public void display() {
System.out.println("display");
}
public void show() {
System.out.println("better show");
}
}
public class Main {
public static void main(String[] args) {
A a = new B();
a.show();
}
}
Kết quả: better show
Sử dụng implements
như thế nào?
implements
được sử dụng để kế thừa từ giao diện (interface) trong Java. Khi một lớp sử dụng implements
từ một interface, lớp đó phải định nghĩa lại (override) tất cả các phương thức trừu tượng của interface đó.
Ví dụ:
interface Runnable {
void run();
}
class R implements Runnable {
public void run() {
System.out.println("do nothing");
}
}
Điểm khác biệt chính:
Dưới đây là một số điểm quan trọng về sự khác biệt giữa extends
và implements
trong Java:
- Một lớp có thể kế thừa từ một lớp khác, nhưng không thể kế thừa từ một interface.
- Khi sử dụng
extends
, một lớp chỉ có thể kế thừa từ một lớp khác. Khi cố gắng kế thừa từ nhiều lớp, sẽ xảy ra lỗi. - Một interface có thể kế thừa từ một interface khác.
- Một lớp có thể kế thừa từ nhiều interface bằng cách sử dụng
implements
. - Một lớp có thể sử dụng cả
extends
vàimplements
. - Một interface không thể kế thừa từ một interface khác.
Đó là những khác biệt quan trọng giữa extends
và implements
trong Java. Hy vọng bài viết đã giúp bạn hiểu rõ hơn về vấn đề này. Nếu bạn có bất kỳ ý kiến đóng góp nào, hãy để lại comment ở dưới bài viết.