Phân biệt extends và implements trong java – https://final-blade.com

Phân biệt extends và implements trong java là một trong những câu hỏi trong phỏng ván thường xuyên gặp.Extends và implements là hai từ khóa được sử dụng rất nhiều trong java.Tuy nhiên một số lập trình viên mới học chưa năm được sự khác biệt thì ở bài viết này sẽ cụ thể hóa vấn đề này.

extends :  kế thừa các class
implements :
 kế thừa các interface

Mặc dù cả hai extends  implements trong Java được sử dụng để thực hiện kế thừa nhưng có những sự khác biệt giữa chúng.Extends được sử dụng để kế thứ từ một class khác trong khi đó  implements cũng được sử dụng để kế từ các interface.

Cách sử dụng extends ? 

Ví dụ tất cả chúng ta có những class A, B.Class A có một phương pháp để hiển thị là show ( ). Class B gồm hai phương pháp display ( ) và show ( ) nhưng Class B kếthừa từ class A.Sau đó tất cả chúng ta sẽ tạo ra đối tượng người tiêu dùng dựa vào class B rồi gọi phương pháp show, tác dụng trả về sẽ là “ better show ” chứ không phải là “ show ”. Lý do vì class B đã extends từ class A thì nếu có hai phương pháp của lớp cha trùng tên thì sẽ ghì đè lên phương pháp trùng tên của lớp con .
Dưới đây là một ví dụ của extends trong Java :

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(); // possible because B extends A
    a.show(); // this will now call to show() method of class B
  }
}

Output
better show

Bạn cũng có thể đọc các tài liệu  Head First Design Pattern in Java  để tìm hiểu thêm về kỹ thuật lập trình.

Cách sử dụng implements ?

Ở ví dụ dưới chúng ta có một class R và implements từ interface Runnable thì bắt buộc rằng class R phải orver @Override tất cả các phương thức trừu tượng của interface Runnable.Ở đây là method run().

class R implements Runnable{
public void run(){
   System.out.println("do nothing");
  }
}

Điểm khác biệt quan trọng :

Dưới đây là một số điểm quan trọng của  extends và implements trong java :

1 ) Một class hoàn toàn có thể kế thừa từ một class khác, không hề extends từ một interface .

interface I{

}

class A{
}

class B extends A{

}

class C extends I{

}

Khi bạn chương trình chạy và biên dịch thì sẽ Open lỗi sau :

$ javac Main.java
Main.java:27: no interface expected here
class C extends I{
^
1 error

2 ) Khi sử dụng extends, một class chỉ hoàn toàn có thể kế thừa từ một class khác, dưới đây là code thông tin lỗi khi cố gắng nỗ lực extends từ nhiều class :

class C extends A, B{

}

$ javac Main.java
Main.java:27: '{' expected
class C extends A, B{
^
1 error

3 ) Một interface hoàn toàn có thể extends từ một interface khác .

interface J extends I{

}

5 ) Một class hoàn toàn có thể thừa kế từ nhiều interface khác bằng cách sử dụng implements, đoạn code dưới đây biểu lộ :

class D implements I, J, K{

}

6)Strong một lớp có thể sử dụng extends và implements.

class E extends A implements I, J{

}

7 ) Một interface không hề implements từ một interface, nó không hề xảy ra vì vậy lúc này khi chạy chương trình, nó sẽ xảy ra ngoại lệ :

interface L implements J{

}

javac Main.java
Main.java:49: '{' expected
interface L implements J{
^
1 error

Đó là tất cả về sự khác biệt giữa extends implements  trong Java.Bài viết nói lên những sự khác biết là kinh nghiệm trong lập trình của tôi có được,hy vọng bạn đọc comment ở dưới bài viết nếu có góp ý thêm về sự khác biệt nhé.