Phân biệt extends và implements trong java

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

Table of Contents

Cách sử dụng extends ? 

Ví dụ chúng ta có các class A,B.Class A có một phương thức để hiển thị là show().Class B gồm hai phương thức display() và show() nhưng Class B kếthừa từ class A.Sau đó chúng ta sẽ tạo ra đối tượng dựa vào class B rồi gọi phương thức show,kết quả 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 thức của lớp cha trùng tên thì sẽ ghì đè lên phương thức 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

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 có thể kế thừa từ một class khác,không thể 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ẽ xuất hiện 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ỉ có thể kế thừa từ một class khác,dưới đây là code thông báo lỗi khi cố gắng 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 có thể extends từ một interface khác.

interface J extends I{

}

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

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 thể implements  từ một interface,nó không thể xảy ra cho nên 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  và 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é.

Related Posts
Lịch sử ngôn ngữ lập trình Java

Java (phiên âm Tiếng Việt: "Gia-va") là một ngôn ngữ lập trình hướng đối tượng, dựa trên lớp được thiết Read more

Phím tắt trong Eclipse giúp tăng năng suất coding

Các phím tắt sẽ giúp tốc độ coding của bạn nhanh hơn rất nhiều, hơn nữa format code của bạn Read more

Lập trình Hướng đối tượng(OOP)

Lập trình hướng đối tượng (tiếng Anh: Object-oriented programming, viết tắt: OOP) là một mẫu hình lập trình dựa trên Read more

Kiểu dữ liệu Nguyên thủy(Primitive)

1. Tổng quan Trong ngôn ngữ lập trình Java có 2 kiểu dữ liệu chúng ta cần nắm và phân Read more

Hãy bình luận đầu tiên

Để lại một phản hồi