Nếu đã tìm hiểu khái niệm Class thì Abstract Class chắc hẳn không còn xa lạ với bạn, vậy bạn đã biết gì về Abstract Class trong Java? Nếu chưa, hãy cùng Rikkei Academy tìm hiểu về qua bài viết này nhé!
Abstraction là gì trong Java?
Tính trừu tượng (Abstraction) trong Java là khả năng mô tả và tập trung vào các đặc tính quan trọng của một đối tượng, bỏ qua các chi tiết không quan trọng, và tạo ra các lớp, phương thức và thuộc tính trừu tượng để thể hiện các tính năng của đối tượng đó. Tính trừu tượng trong Java được thực hiện thông qua các cơ chế:
- Lớp trừu tượng (abstract class)
- Giao diện (Interface)
Abstract class trong Java là gì?
Abstract class là một lớp trừu tượng mà không thể được khởi tạo trực tiếp. Nó được sử dụng để định nghĩa các phương thức trừu tượng mà các lớp con cần triển khai
Nó chứa ít nhất một phương thức trừu tượng, tức là phương thức không có phần thân hàm, và được khai báo bằng từ khóa “abstract”. Các lớp con của lớp trừu tượng phải triển khai tất cả các phương thức trừu tượng của lớp cha trừu tượng để có thể được khởi tạo.
Mục đích sử dụng của Abstract Class trong Java
Abstract Class trong Java được sử dụng vì các mục đích sau:
- Lớp trừu tượng trong Java cung cấp một mẫu (template) để triển khai quá trình trừu tượng dữ liệu bằng cách giấu đi chi tiết cài đặt. Nó cũng cung cấp cho người sử dụng cuối một mẫu mô tả các phương thức có sẵn.
- Trừu tượng hóa dữ liệu trong Java giúp giảm sự phụ thuộc (Loose Coupling) giữa các thành phần của chương trình, giúp tăng tính linh hoạt và dễ bảo trì.
- Sử dụng lớp trừu tượng cho phép tái sử dụng mã (Code Reusability) giúp tiết kiệm thời gian. Các phương thức trừu tượng có thể được triển khai lại trong các lớp con.
- Bằng cách sử dụng hỗ trợ của quá trình giải quyết phương thức động (Dynamic Resolution), lập trình viên có thể giải quyết nhiều vấn đề với sự trợ giúp của một phương thức trừu tượng.

Lưu ý về lớp abstract trong Java
- Nó không thể được khởi tạo.
- Nó có thể có các phương thức trừu tượng và phương thức không trừu tượng.
- Nó có thể có các phương thức khởi tạo (constructor) và phương thức tĩnh (static method).
- Nó có thể có các phương thức cuối cùng (final) được dùng để buộc lớp con không được thay đổi nội dung của phương thức.
Các thao tác cơ bản với Abstract Class trong Java
Dưới đây là một số thao tác với Abstract Class trong Java cơ bản mà bạn cần nắm rõ:
Khai báo Abstract Class trong Java
Để khai báo một lớp trừu tượng trong Java, ta sử dụng từ khóa “abstract” và đặt nó trước tên lớp. Cú pháp chính xác để khai báo một lớp trừu tượng như sau:
<Access_Modifier> abstract class <Class_Name> {
//Data_Members; //Statements; //Methods; } |
Trong đó:
- Access_Modifier: từ khóa chỉ định quyền truy cập của lớp trừu tượng.
- Abstract class: từ khóa định nghĩa một lớp trừu tượng.
- Class_Name: tên lớp trừu tượng.
- Data_Members: các biến thành viên (member variables) của lớp trừu tượng
- Statements: các câu lệnh, chú thích hoặc bất kỳ nội dung nào khác bạn muốn đặt trong lớp trừu tượng.
- Method: phương thức của lớp trừu tượng có thể là phương thức trừu tượng (abstract method), phương thức không trừu tượng (non-abstract method) hoặc cả hai.
Ví dụ:
public abstract class Animal {
public abstract void makeSound(); } |
Trong ví dụ này, chúng ta khai báo một lớp trừu tượng Animal, có một abstract method là makeSound().
Khai báo một phương thức trừu tượng
Phương thức trừu tượng: Là một phương thức được khai báo là trừu tượng và không có thân hàm. Các abstract method (phương thức trừu tượng) cho phép định nghĩa các hành động hoặc tính năng của đối tượng mà không cần cung cấp các chi tiết cụ thể về cách thực hiện hành động (mã lệnh) đó. Các lớp con sẽ phải triển khai các abstract methods này để cung cấp các chi tiết cụ thể về cách thực hiện các hành động đó.
Để khai báo một phương thức trừu tượng, chúng ta sử dụng từ khóa “abstract” trước khai báo phương thức và không có thân hàm (body) cho phương thức đó.
Cú pháp:
abstract <modifier> <return_type> <method_name>(<parameter_list>); |
Trong đó:
- abstract: từ khóa để khai báo phương thức trừu tượng.
- modifier: các từ khóa truy cập.
- return_type: kiểu dữ liệu của giá trị trả về của phương thức hoặc từ khóa void nếu phương thức không trả về giá trị nào.
- method_name: tên phương thức.
- parameter_list: danh sách các tham số của phương thức, được phân tách bằng dấu phẩy (,).
Ví dụ:
public abstract void makeSound(); |
Ghi đè phương thức trừu tượng
Lớp con phải triển khai lại tất cả các phương thức trừu tượng của lớp cha hoặc định nghĩa lại lớp con là một lớp trừu tượng. Việc ghi đè phương thức trừu tượng cho phép các lớp con tuỳ chỉnh triển khai của phương thức trừu tượng theo nhu cầu của chúng.
Khi lớp con triển khai lại một phương thức trừu tượng, chúng ta sử dụng từ khóa “override” để đánh dấu phương thức đó là phương thức được ghi đè. Cú pháp:
@Override
<modifier> <return_type> <method_name>(<parameter_list>) { // code implementation } |
Ví dụ:
@Override
public void makeSound() { System.out.println(“Bark!”); } } |
Kế thừa từ một lớp trừu tượng
Do lớp trừu tượng không thể tạo ra đối tượng hoặc triển khai trực tiếp từ lớp đó. Do đó, để truy cập các phương thức bên trong các lớp trừu tượng, chúng ta phải thực hiện kế thừa từ lớp trừu tượng đó bằng cách sử dụng từ khóa “extends” trong khai báo lớp con. Lớp con phải triển khai tất cả các phương thức trừu tượng có trong lớp cha trừ khi lớp con cũng là một lớp trừu tượng.
Cú pháp:
abstract class TenLopCha {
// các phương thức trừu tượng } class TenLopCon extends TenLopCha { // định nghĩa các phương thức trừu tượng và/hoặc phương thức khác } |
Ví dụ:
public class Dog extends Animal {
// code here } |
Kết luận
Bài viết này đã cung cấp các thông tin chi tiết về Abstract class trong Java từ khái niệm, đặc điểm đến một số thao tác làm việc cơ bản. Hy vọng những thông tin này sẽ giúp ích cho bạn trong quá trình tìm hiểu về ngôn ngữ lập trình Java.
Nếu bạn đang muốn tìm kiếm khóa học lập trình Java cho người mới bắt đầu, tham khảo Rikkei Academy nhé! Lộ trình tinh gọn với kiến thức, kỹ năng bám sát thực tế giúp bạn nắm vững nền tảng để trở thành lập trình viên tiêu chuẩn chỉ sau 6 tháng! Đăng ký để nhận tư vấn và buổi học trải nghiệm cùng giảng viên Rikkei Academy!
Tài liệu tham khảo:
https://www.simplilearn.com/tutorials/java-tutorial/abstract-class-in-java
https://www.javatpoint.com/abstract-class-in-java
https://www.geeksforgeeks.org/difference-between-abstract-class-and-interface-in-java/