Bài tập

Phân biệt extends và implements trong Java: Điều gì khác biệt?

Huy Erick

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...

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 extendsimplements. 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 extendsimplements trong Java:

  1. 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.
  2. 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.
  3. Một interface có thể kế thừa từ một interface khác.
  4. Một lớp có thể kế thừa từ nhiều interface bằng cách sử dụng implements.
  5. Một lớp có thể sử dụng cả extendsimplements.
  6. 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 extendsimplements 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.

1