Lộ Trình Tự Học Java: Tính Trừu Tượng (Abstraction) - Abstract Class Hay Interface?

Trong lập trình hướng đối tượng (OOP), Tính trừu tượng (Abstraction) là kỹ thuật ẩn đi những chi tiết cài đặt phức tạp bên trong và chỉ hiển thị ra những tính năng cốt lõi cho người dùng hoặc các thành phần khác tương tác. Trong Java, tính trừu tượng được thực hiện thông qua hai công cụ chính: Abstract Class (Lớp trừu tượng) và Interface (Giao diện).

Minh họa so sánh Abstract Class và Interface trong Java

Người mới học Java thường băn khoăn: Khi nào nên dùng Abstract Class, khi nào nên chọn Interface? Bài viết này sẽ giúp bạn hiểu rõ bản chất từng khái niệm và biết cách đưa ra quyết định chính xác khi thiết kế hệ thống.

1. Lớp Trừu Tượng (Abstract Class) Là Gì?

Abstract Class là một lớp được khai báo với từ khóa abstract. Mục đích chính của nó là đóng vai trò làm lớp cơ sở (lớp cha) cho các lớp con kế thừa (sử dụng từ khóa extends).

Đặc điểm của Abstract Class:

  • Không thể khởi tạo đối tượng trực tiếp: Bạn không thể sử dụng từ khóa new để tạo đối tượng từ Abstract Class.
  • Chứa các loại phương thức: Có thể chứa cả phương thức trừu tượng (abstract method - không có thân hàm) lẫn phương thức bình thường (concrete method - có thân hàm xử lý cụ thể).
  • Chứa thuộc tính đa dạng: Có thể khai báo biến instance với các phạm vi truy cập (access modifier) khác nhau (private, protected, public) và có thể thay đổi giá trị.
  • Có Constructor: Dù không tạo đối tượng trực tiếp nhưng vẫn có constructor để lớp con gọi khởi tạo tài nguyên chung thông qua super().
// Khai báo Abstract Class
public abstract class Animal {
    private String name;

    public Animal(String name) {
        this.name = name;
    }

    // Phương thức trừu tượng: Lớp con BẮT BUỘC phải override
    public abstract void makeSound();

    // Phương thức bình thường: Lớp con tái sử dụng trực tiếp
    public void sleep() {
        System.out.println(name + " đang ngủ... Zzz");
    }

    public String getName() {
        return name;
    }
}

// Lớp con kế thừa
public class Dog extends Animal {
    public Dog(String name) {
        super(name);
    }

    @Override
    public void makeSound() {
        System.out.println("Gâu gâu!");
    }
}

2. Interface (Giao Diện) Là Gì?

Interface là một mô đun thiết kế dùng để định nghĩa một


Nguồn tham khảo


📚 Chuỗi bài: Lộ Trình Tự Học Java Từ Con Số 0 Đến Ứng Dụng Thực Tế

Chuỗi 20 bài viết thiết kế dạng 'cầm tay chỉ việc' dành riêng cho người mới bắt đầu học lập trình Java. Lộ trình đi từ tư duy nền tảng, cú pháp cơ bản, lập trình hướng đối tượng (OOP) cho đến hoàn thiện một dự án thực tế nhỏ.

  1. 1. Java Là Giống Gì? Cài Đặt Environment (JDK & IntelliJ IDEA) Cực Nhanh
  2. 2. Giải Mã Chương Trình 'Hello World' Và Cấu Trúc Cơ Bản Của Bài Code Java
  3. 3. Biến Và Kiểu Dữ Liệu Trong Java: Cách Lưu Trữ Thông Tin Đúng Chuẩn
  4. 4. Toán Tử Trong Java: Hướng Dẫn Tính Toán Và So Sánh Chi Tiết
  5. 5. Nhập Xuất Dữ Liệu Với Scanner: Làm Cho Chương Trình Biết Tương Tác
  6. 6. Cấu Trúc Điều Kiện If-Else Và Switch-Case: Dạy Máy Tính Rẽ Nhánh Tư Duy
  7. 7. Vòng Lặp For, While Và Do-While Trong Java: Tự Động Hóa Công Việc Lặp Lại
  8. 8. Phương Thức (Method) Trong Java: Tái Sử Dụng Code Một Cách Thông Minh
  9. 9. Mảng Một Chiều (Array) Trong Java: Quản Lý Danh Sách Dữ Liệu Đơn Giản
  10. 10. Bài 10: Xử Lý Chuỗi Dữ Liệu Với String Và StringBuilder Trong Java
  11. 11. Lập Trình Hướng Đối Tượng (OOP): Lớp (Class) Và Đối Tượng (Object) Là Đâu?
  12. 12. Tính Đóng Gói (Encapsulation) Và Access Modifiers: Bảo Vệ Dữ Liệu Safe 100%
  13. 13. Tính Kế Thừa (Inheritance): Tái Sử Dụng Mã Nguồn Với Từ Khóa Extends
  14. 14. Tính Đa Hình (Polymorphism): Nạp Chồng (Overloading) Và Ghi Đè (Overriding)
  15. 15. Lộ Trình Tự Học Java: Tính Trừu Tượng (Abstraction) - Abstract Class Hay Interface? ← Bạn đang đọc
  16. 16. Xử Lý Ngoại Lệ (Exception Handling): Giúp Chương Trình Không Bị 'Sập' Đột Ngột
  17. 17. Java Collections Framework: Làm Quen Mảng Cố Định Với ArrayList
  18. 18. Lưu Trữ Cặp Dữ Liệu Key-Value Cực Kỳ Nhanh Với HashMap
  19. 19. Đọc Và Ghi File Trong Java: Lưu Trữ Dữ Liệu Lâu Dài Vào Ổ Cứng
  20. 20. Dự Án Thực Tế: Xây Dựng Ứng Dụng Quản Lý Sinh Viên Console Hoàn Chỉnh

← Bài trước: Tính Đa Hình (Polymorphism): Nạp Chồng (Overloading) Và Ghi Đè (Overriding) Bài tiếp theo: Xử Lý Ngoại Lệ (Exception Handling): Giúp Chương Trình Không Bị 'Sập' Đột Ngột →

Nhận xét