Extend là gì 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ệtthì ở 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ácinterface

Extend là gì trong Java
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?

Extend là gì trong Java
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

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.

Extend là gì trong Java

Cách sử dụng implements?

Extend là gì trong Java
Ở 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 interfaceRunnable.Ở đây là method run().

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

Extend là gì trong Java

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

Dưới đây là một số điểm quan trọng củaextends 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ụngimplements,đoạn code dưới đây thể hiện :

class D implements I, J, K{ }

6)Strong mộtlớ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 extendsimplementstrong 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é.