CyStack logo
  • Sản phẩm & Dịch vụ
  • Giải pháp
  • Bảng giá
  • Công ty
  • Tài liệu
Vi

vi

Trang chủHướng dẫnTính trừu tượng trong OOP là gì?
Java

Tính trừu tượng trong OOP là gì?

CyStack blog 3 phút để đọc
CyStack blog18/09/2025
Locker Avatar

Bao Tran

Web Developer

Locker logo social
Reading Time: 3 minutes

Abstraction (tính trừu tượng) là một trong những khái niệm cốt lõi của Lập trình hướng đối tượng (OOP). Abstraction định nghĩa một mô hình để tạo ra một thành phần của ứng dụng. Việc triển khai Abstraction phụ thuộc vào các tính năng và quy trình dành riêng cho từng ngôn ngữ.

Tính trừu tượng trong OOP là gì?

1. Tính trừu tượng là gì?

Tính trừu tượng là quá trình ẩn đi các chi tiết bên trong của một ứng dụng khỏi thế giới bên ngoài. Tính trừu tượng được sử dụng để mô tả các thứ theo những thuật ngữ đơn giản. Nó được sử dụng để tạo ra ranh giới giữa ứng dụng và các chương trình của khách hàng.

2. Tính trừu tượng trong đời thực

Tính trừu tượng có mặt trong hầu hết các máy móc trong đời thực.

  • Xe hơi của bạn là một ví dụ tuyệt vời về tính trừu tượng. Bạn có thể khởi động một chiếc xe bằng cách vặn chìa khóa hoặc nhấn nút khởi động. Bạn không cần phải biết động cơ khởi động như thế nào, chiếc xe của bạn có những thành phần nào. Việc triển khai bên trong và logic phức tạp của chiếc xe hoàn toàn bị ẩn đi đối với người dùng.
  • Chúng ta có thể làm nóng thức ăn bằng Lò vi sóng. Chúng ta nhấn một vài nút để đặt thời gian và loại thực phẩm. Cuối cùng, chúng ta có một bữa ăn nóng hổi và ngon miệng. Các chi tiết bên trong của lò vi sóng bị ẩn đi đối với chúng ta. Chúng ta được cung cấp quyền truy cập vào chức năng một cách rất đơn giản.

3. Tính trừu tượng trong OOP

Trong OOP, Object là những viên gạch cơ bản để xây nên cả hệ thống. Mỗi object chứa một số thuộc tính (properties) và phương thức (methods). Chúng ta có thể ẩn chúng khỏi thế giới bên ngoài thông qua các công cụ sửa đổi quyền truy cập.

Ta chỉ cung cấp quyền truy cập cho những thuộc tính và phương thức cần thiết đối với các chương trình khác. Đây là quy trình chung để triển khai tính trừu tượng trong OOP.

4. Các loại tính trừu tượng khác nhau là gì?

Có hai loại tính trừu tượng:

  • Tính trừu tượng dữ liệu (Data Abstraction)
  • Tính trừu tượng quy trình (Process Abstraction)

4.1) Tính trừu tượng dữ liệu

Khi dữ liệu đối tượng không hiển thị với thế giới bên ngoài, nó tạo ra tính trừu tượng dữ liệu. Nếu cần, quyền truy cập vào dữ liệu của các đối tượng được cung cấp thông qua một số phương thức.

Du lieu ve tinh truu tuong

4.2) Tính trừu tượng quy trình

Chúng ta không cần phải cung cấp chi tiết về tất cả các chức năng của một đối tượng. Khi chúng ta ẩn việc triển khai bên trong của các chức năng khác nhau liên quan đến một hoạt động của người dùng, nó sẽ tạo ra tính trừu tượng quy trình.

process abstraction

5. Tính trừu tượng trong Java

Tính trừu tượng trong Java được triển khai thông qua các giao diện (interfaces) và các lớp trừu tượng (abstract classes). Chúng được sử dụng để tạo ra một việc triển khai cơ sở hoặc hợp đồng cho các lớp triển khai thực tế. Ví dụ:

  • Car.java: giao diện cơ sở hoặc lớp trừu tượng
package com.journaldev.oops.abstraction;

public interface Car {

	void turnOnCar();

	void turnOffCar();

	String getCarType();
}
  • ManualCar.java, AutomaticCar.java: các lớp triển khai của Car
package com.journaldev.oops.abstraction;

public class ManualCar implements Car {

	private String carType = "Manual";

	@Override
	public void turnOnCar() {
		System.out.println("turn on the manual car");
	}

	@Override
	public void turnOffCar() {
		System.out.println("turn off the manual car");
	}

	@Override
	public String getCarType() {
		return this.carType;
	}
}
  • User Program: chương trình client chỉ biết về Car và các chức năng mà Car cung cấp. Các chi tiết triển khai bên trong bị ẩn khỏi chương trình client.
package com.journaldev.oops.abstraction;

public class CarTest {

	public static void main(String[] args) {
		Car car1 = new ManualCar();
		Car car2 = new AutomaticCar();

		car1.turnOnCar();
		car1.turnOffCar();
		System.out.println(car1.getCarType());

		car2.turnOnCar();
		car2.turnOffCar();
		System.out.println(car2.getCarType());

	}

}

Chương trình client chỉ biết về chiếc xe hơi (car) và các chức năng mà nó cung cấp. Các chi tiết triển khai bên trong bị ẩn khỏi chương trình client. Tài liệu tham khảo: Wikipedia, Oracle Docs

0 Bình luận

Đăng nhập để thảo luận

Chuyên mục Hướng dẫn

Tổng hợp các bài viết hướng dẫn, nghiên cứu và phân tích chi tiết về kỹ thuật, các xu hướng công nghệ mới nhất dành cho lập trình viên.

Đăng ký nhận bản tin của chúng tôi

Hãy trở thành người nhận được các nội dung hữu ích của CyStack sớm nhất

Xem chính sách của chúng tôi Chính sách bảo mật.

Đăng ký nhận Newsletter

Nhận các nội dung hữu ích mới nhất