Trong lập trình Java, “extends” và “implements” là hai từ khóa quan trọng được sử dụng để thực hiện kế thừa, tạo ra sự kết nối giữa các lớp và giao diện khác nhau. Tuy cả hai từ khóa này đều liên quan đến việc chia sẻ mã nguồn giữa các phần của chương trình, nhưng chúng có những sự khác biệt quan trọng. Trong bài viết này, chúng ta sẽ tìm hiểu về những sự khác biệt đó và cách chúng được sử dụng trong lập trình Java.
1. Cách Sử Dụng “Extends”
Khi sử dụng từ khóa “extends,” một lớp có thể kế thừa tất cả nội dung của một lớp khác. Điều này bao gồm cả các phương thức và thuộc tính của lớp cha.
Ví dụ:
Giả sử chúng ta có hai lớp: A và B. Lớp A có một phương thức “show()”. Lớp B kế thừa từ lớp A và có một phương thức “display()”. Khi chúng ta tạo một đối tượng dựa trên lớp B và gọi phương thức “show()”, phương thức của lớp con sẽ được gọi, và nó sẽ ghi đè lên phương thức của lớp cha.
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(); // Có thể thực hiện bởi vì B kế thừa từ A
a.show(); // Kết quả sẽ là “better show”
}
}
2. Cách Sử Dụng “Implements”
Khi sử dụng từ khóa “implements,” một lớp phải triển khai tất cả các phương thức trừu tượng được xác định trong một giao diện. Giao diện là một tập hợp các phương thức trừu tượng mà một lớp cụ thể phải cung cấp một thân hàm cho mỗi phương thức đó.
Ví dụ:
Trong ví dụ sau, chúng ta có một lớp R triển khai giao diện Runnable. Vì giao diện Runnable chứa phương thức trừu tượng “run(),” lớp R phải cung cấp một thân hàm cho phương thức này.
class R implements Runnable {
public void run() {
System.out.println("do nothing");
}
}
3. Điểm Khác Biệt Quan Trọng
Dưới đây là một số điểm quan trọng cần lưu ý 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ể extends từ một giao diện.
- Khi sử dụng “extends,” một lớp chỉ có thể kế thừa từ một lớp khác, không thể kế thừa từ nhiều lớp.
- Một giao diện có thể extends từ một giao diện khác.
- Một lớp có thể kế thừa từ nhiều giao diện khác bằng cách sử dụng “implements.”
- Một lớp có thể sử dụng cả “extends” và “implements.”
Kết Luận
Sự khác biệt giữa “extends” và “implements” trong Java là quan trọng để hiểu để có thể thiết kế và triển khai chương trình một cách hiệu quả. Tuy cả hai từ khóa này đều liên quan đến kế thừa, nhưng chúng có mục tiêu và cách sử dụng khác nhau. Hy vọng rằng bài viết này đã giúp bạn hiểu rõ hơn về sự khác biệt này và sẽ hữu ích trong quá trình lập trình Java của bạn.