Sự khác biệt giữa Abstract Class và Interface

0
2842
So sánh Abstract class và Interface trong Java

Cả Abstract class và Interface đều được sử dụng để đạt được sự trừu tượng nơi chúng ta có thể khai báo các phương thức trừu tượng. Cả Abstract class và Interface đều không thể được khởi tạo.

Nhìn chung, chúng khá giống nhau, nhưng có nhiều điểm khác biệt giữa Abstract class và Interface khiến nó được sử dụng ở những trường hợp khác nhau.

So sánh Abstract class và Interface trong Java
Abstract classInterface
1) Abstract class có thể có phương thức trừu tượng hoặc không trừu tượng.Interface chỉ có thể có phương thức trừu tượng. Từ Java 8, nó có thể có phương thức default và static
2) Abstract class không hỗ trợ đa kế thừaInterface hỗ trợ đa kế thừa
3) Abstract có thể có biến final, non-final, static và non-static.Interface chỉ có thể có biến static và final
4) Abstract class có thể cung cấp khai triển cụ thể cho interface.Interface không thể cung cấp khai triển cụ thể cho abstract class.
5) Từ khóa abstract được sử dụng để định nghĩa abstract classTừ khóa interface được sử dụng để định nghĩa interface
6) Một abstract class có thể extend Java class và implements nhiều interfaceMột interface chỉ có thể extends Java interface khác.
7) Một abstract class có thể được mở rộng bằng từ khóa extendsMột interface có thể khai triển bằng từ khóa implements
8) Một abstract class có thể có các thành viên trong lớp như private, protected …Các thành viên của interface mặc định là public static final
9) Ví dụ:
public abstract class Hinh{
public abstract void veHinh();
}
Ví dụ:
public interface Ve{
void veHinh();
}

Sự khác biệt đơn giản, abstract class có thể đạt được trừu tượng một phần (0 đến 100%) trong khi interface đạt được mức trừu tượng hoàn toàn (100%).

Ghi chú: Nếu bạn đang tích cực học Java, KHÓA HỌC LẬP TRÌNH JAVA với sự hướng dẫn của chuyên gia doanh nghiệp này chắc chắn sẽ giúp bạn học tập nhanh hơn, bài bản hơn.

Ví dụ về Abstract class và Interface trong JAVA

Hãy xem một ví dụ đơn giản trong đó chúng ta đang sử dụng cả interface và lớp trừu tượng.

// Creating interface that has 4 methods  
interface A{  
    void a(); // mặc định là public abstract
    void b();  
    void c();  
    void d();  
}  
  
// Tạo abstract method và cung cấp khai triển cho một phương thức của A  
abstract class B implements A{  
    public void c(){
        System.out.println("Tôi là C");
    }  
}  
  
//  Tạo class con của Abstract class B và cung cấp khai triển cụ thể cho các phương thức còn lại
class M extends B{  
    public void a(){
        System.out.println("Tôi là a");
    }  
    public void b(){
        System.out.println("Tôi là b");
    }  
    public void d(){
        System.out.println("Tôi là d");
    }  
}  
  
// Tạo class thử nghiệm và thử gọi phương thức của interface A 
class Test{
    public static void main(String args[]){  
        A a = new M();  
        a.a();  
        a.b();  
        a.c();  
        a.d();  
    }
}  

Kết quả:

Tôi là a
Tôi là b
Tôi là C
Tôi là d

Tổng kết

Như vậy là trong và viết này mình đã giúp bạn tìm hiểu rõ sự khác nhau của Abstract class và Interface trong Java.

Chúc bạn học tập tốt.