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).
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
- Interface Và Abstract Class Java: Khác Biệt Và Cách Sử ...
- Sự khác biệt giữa Interface và Abstract class trong Java là gì
- Abstract class và Interface trong Java - GP Coder (Lập trình Java)
- Abstract Class và Interface trong Java - Viblo
- Phân biệt Interface và Abstract trong lập trình c# và OOP
Nhận xét
Đăng nhận xét