Trang chủ » Blog » So sánh Abstract class và Interface

So sánh Abstract class và Interface

bởi CodeGym | 26/12/2023 15:37 | Blog

Abstract class và Interface

Lớp (Class) trong lập trình hướng đối tượng là một khuôn mẫu hoặc một bản thiết kế, mô hình mô phỏng các đối tượng.

Đối tượng là các thể hiện của lớp, một đối tượng là một sự tượng trưng cho một thực thể, hoặc là thực thể tồn tại trong thế giới đời thực hoặc thực thể mang tính khái niệm. Một đối tượng có thể tượng trưng cho cái gì đó cụ thể.

Ví dụ: một chiếc Mercedes Benz là một đối tượng thuộc lớp Car, một chiếc IphoneX là đối tượng thuộc lớp Mobile,…

Các ngôn ngữ hướng đối tượng như Java, C#,… hỗ trợ khái niệm kế thừa. Kế thừa có nghĩa là một đối tượng có thể được thừa kế các hành vi và phương thức của lớp. Bất cứ khi nào bạn tạo đối tượng mới của một lớp, bạn nói rằng bạn đang khởi tạo nó.

Lớp trừu tượng (Abstract Class)

Là một lớp nhưng không thể tạo ra thực thể. Abstract class có thể chứa hoặc không chứa phương thức abstract – một phương thức chỉ có khai báo mà không chứa cài đặt.

abstract class Cars
{
	int gas;
	int getGas()
	{
	    return this.gas;
	}

	abstract void run();
}

class Merc extends Cars
{
   void run()
   {
        print("Fast");
   }
}

Giải thích: Trong phần đầu tiên của mã, khai báo một lớp trừu tượng Cars. Các phương thức của lớp trừu tượng Cars sẽ được kế thừa bởi các lớp con.

Interface

Một interface không phải là một lớp (class), giống như lớp trừu tượng. Nó chứa các phương thức mà không phần thân. Một interface không thể tự làm bất cứ điều gì. Interface như một khuôn mẫu. Với ngôn ngữ Java không hỗ trợ đa kế thừa nhưng có thể triển khai nhiều interface.

interface Cars
{
     void run();
     int getGas();
}
class Merc implements Cars
{
    int gas;
    void run()
    {
    print("Faster");
    }
    int getGas()
    {
    return this.gas;
    }
}

 

Giải thích: Chúng ta có thể thấy, các phương thức của interface không có phần thân, chỉ xác định kiểu dữ liệu trả về và tên phương thức, không giống như lớp trừu tượng mà chúng ta đã khai báo trước đó.

Sự khác biệt giữa Abtract class và Interface

Một interface chứa một tập hợp các phương thức. Một lớp implements interface phải triển khai các phương thức này.

Một lớp trừu tượng, giống như một interface, sẽ chứa các phương thức. Tuy nhiên, sẽ có ít nhất một phương thức đã hoàn thành tức là phương thức có phần thân. Đây là một sự khác biệt chính giữa abstract class và interface.

Ngoài sự khác biệt lớn này, đây là một số khác biệt giữa Abstract class và Interface

 

Abstract class

Interface

Lớp trừu tượng có thể có các phương thức trừu tượng và không trừu tượngChỉ có phương thức trừu tượng
Không hỗ trợ đa kế thừaHỗ trợ đa kế thừa
Có thể có các biến final, non-final, static và non-staticChỉ có các biến static và final
Có thể implement interfaceKhông thể extents lớp abstract
Từ khóa abstract được sử dụng để khai báo lớp trừu tượngTừ khóa interface được sử dụng để khai báo giao diện
Một lớp trừu tượng có thể extents một lớp Java khác và thực hiện nhiều interfaceMột interface chỉ có thể implement interface khác
Có thể được kế thừa bằng cách sử dụng từ khóa “extends”Các lớp triển khai interface sử dụng từ khóa implements
Một lớp trừu tượng có thể có phạm vi truy cập là private, protected,…Các phương thức của interface được mặc định là public
public abstract class Shape {

      public abstract void draw();

}

public interface Drawable {

void draw();

}

Author: Mai Công Sơn

Đăng ký nhận bộ tài liệu học Java trên 2 trang giấy tại đây

Xem thêm: Java Coding Bootcamp là gì? Tổng quan về Java Coding Bootcamp

HỆ THỐNG ĐÀO TẠO LẬP TRÌNH HIỆN ĐẠI | CodeGym

Tags:

0 Lời bình

Gửi Lời bình

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

BÀI VIẾT LIÊN QUAN

BẠN MUỐN HỌC LẬP TRÌNH?

GỌI NGAY

098 953 44 58

Đăng ký tư vấn lộ trình học lập trình

Đăng ký tư vấn, định hướng lộ trình học và giải đáp các thắc mắc về ngành nghề – Miễn phí – Online.

13 + 13 =

TƯ VẤN VỀ LỘ TRÌNH HỌC NGHỀ LẬP TRÌNH TẠI CODEGYM
TƯ VẤN VỀ LỘ TRÌNH HỌC NGHỀ LẬP TRÌNH TẠI CODEGYM