FaCode Ngôn ngữ Java sự khác nhau giữa Abstract class và Interface

FaCode Ngôn ngữ Java

FaCode Ngôn ngữ Java Sự khác nhau giữa Abstract class và Interface

Sự khác nhau giữa Abstract class và Interface

Abstract class và interface đều được sử dụng để có được sự trừu tượng mà ở đó chúng ta có thể khai báo các phương thức trừu tượng. Nhưng có một vài sự khác nhau giữa abstract class và interface được liệt kê trong bảng sau:

Abstract classInterface
1) Abstract class có phương thức abstract (không có thân hàm) và phương thức non-abstract (có thân hàm).Interface chỉ có phương thức abstract. Từ java 8, nó có thêm các phương thức default và static.
2) Abstract class không hỗ trợ đa kế thừa.Interface có hỗ trợ đa kế thừa
3) Abstract class có các biến final, non-final, static and non-static.Interface chỉ có các biến static và final.
4) Abstract class có thể cung cấp nội dung cài đặt cho phương thức của interface.Interface không thể cung cấp nội dung cài đặt cho phương thức của abstract class.
5) Từ khóa abstract được sử dụng để khai báo abstract class.Từ khóa interface được sử dụng để khai báo interface.
6) Ví dụ:public abstract class Shape {public abstract void draw();}Ví dụ:public interface Drawable {void draw();}
FaCode Ngôn ngữ Java

Đơn giản để hiểu, đó là abstract class có được trừu tượng 1 phần (0 tới 100%), còn interface có được trừu tường toàn phần (100%).

Ví dụ về abstract class và interface trong java

Ví dụ sau là sự kết hợp giữa abstract class và interface.

FaCode Ngôn ngữ Java

Kết quả:

FaCode Ngôn ngữ Java

Code:

//tạo interface có 4 phương thức
interface A {

          void a();

          abstract void b();

          public void c();

          public abstract void d();

}

// tạo abstract class cung cấp cài đặt cho một phương thức của interface A

abstract class B implements A {

          public void c() {

          System.out.println("I am ps");

    }

}

// tạo subclass của abstract class B, cung cấp cài đặt cho các phương thức còn lại

class M extends B {

    public void a() {

        System.out.println("I am pr");

    }

    public void b() {

        System.out.println("I am lr");

    }

    public void d() {

        System.out.println("I am ai");

    }

}

// tạo lớp Test5 để gọi các phương thức của interface A

public class Test5 {

public static void main(String args[]) {

               A a = new M();

              a.a();

              a.b();
  
              a.c();

    }

}
FaCode Ngôn ngữ Java

____________

Khóa học lập trình

7 Java frameworks phổ biến nhất hiện nay

xem thêm

__________

FaCode là một seri học tập lập trình, lần này là FaCode ngôn ngữ Java, bằng mọi nỗ lực FaCode sẽ hoàn thành các mục tiêu đề ra trong FaCode Ngôn ngữ Java. Hãy đồng hành cùng FaCode Ngôn ngữ Java và theo dõi chúng tôi nhé. FaCode Ngôn ngữ Java rất mong nhận được lời góp ý từ phía cộng đồng. Share4Happy với phương châm chia sẻ để hạnh phúc.

Related posts

FaCode Ngôn ngữ Java những câu hỏi phỏng vấn về Hibernate trong Java

FaCode Ngôn ngữ Java những câu hỏi phỏng vấn về JSP trong Java

FaCode Ngôn ngữ Java những câu hỏi phỏng vấn servlet.