Lập trình hướng đối tượng (Object-Oriented Programming – OOP) là một trong những nền tảng quan trọng nhất của ngôn ngữ Java. Thay vì viết code theo từng bước tuần tự, OOP cho phép bạn mô hình hóa thế giới thực thành các đối tượng (object) với thuộc tính và hành vi riêng biệt.
Trong bài viết này, chúng ta sẽ cùng tìm hiểu 4 trụ cột cốt lõi của OOP trong Java kèm theo các ví dụ minh họa rõ ràng.
4 Nguyên Lý Cốt Lõi Của OOP
1. Đóng Gói (Encapsulation)
Đóng gói là cơ chế che giấu dữ liệu bên trong một class và chỉ cho phép truy cập thông qua các phương thức công khai (getter/setter). Điều này giúp bảo vệ tính toàn vẹn của dữ liệu.
public class TaiKhoanNganHang {
private double soDu; // thuộc tính ẩn
public double getSoDu() {
return soDu;
}
public void napTien(double soTien) {
if (soTien > 0) {
soDu += soTien;
}
}
}
Bằng cách khai báo soDu là private, bạn ngăn không cho code bên ngoài thay đổi số dư tùy tiện mà phải đi qua phương thức kiểm soát.
2. Kế Thừa (Inheritance)
Kế thừa cho phép một class con (subclass) tái sử dụng thuộc tính và phương thức của class cha (superclass), giúp giảm thiểu code trùng lặp.
public class DongVat {
public void an() {
System.out.println("Động vật đang ăn");
}
}
public class Cho extends DongVat {
public void sua() {
System.out.println("Gâu gâu!");
}
}
Class Cho kế thừa phương thức an() từ DongVat và bổ sung hành vi riêng của nó.
3. Đa Hình (Polymorphism)
Đa hình cho phép cùng một phương thức hoạt động khác nhau tùy vào đối tượng gọi nó. Trong Java, đa hình thể hiện qua ghi đè phương thức (method overriding) và nạp chồng phương thức (method overloading).
public class HinhHoc {
public double tinhDienTich() { return 0; }
}
public class HinhTron extends HinhHoc {
private double banKinh;
@Override
public double tinhDienTich() {
return Math.PI * banKinh * banKinh;
}
}
public class HinhVuong extends HinhHoc {
private double canh;
@Override
public double tinhDienTich() {
return canh * canh;
}
}
4. Trừu Tượng Hóa (Abstraction)
Trừu tượng hóa cho phép bạn định nghĩa cái gì cần làm mà không cần quan tâm làm như thế nào. Trong Java, điều này thực hiện qua abstract class và interface.
public interface HinhDang {
double tinhDienTich();
double tinhChuVi();
}
public class HinhChuNhat implements HinhDang {
private double chieuDai, chieuRong;
@Override
public double tinhDienTich() { return chieuDai * chieuRong; }
@Override
public double tinhChuVi() { return 2 * (chieuDai + chieuRong); }
}
Bảng So Sánh Abstract Class vs Interface
| Tiêu chí | Abstract Class | Interface |
|---|---|---|
| Kế thừa | Chỉ kế thừa 1 class | Implement nhiều interface |
| Constructor | Có thể có | Không có |
| Thuộc tính | Tất cả loại | Chỉ public static final |
| Phương thức | Có thể có body | Mặc định abstract (trước Java 8) |
Kết Luận
Nắm vững 4 nguyên lý OOP — Đóng gói, Kế thừa, Đa hình và Trừu tượng hóa — là bước nền tảng không thể thiếu để trở thành Java developer chuyên nghiệp. Hãy thực hành xây dựng các ví dụ nhỏ trước khi chuyển sang các chủ đề nâng cao hơn như Generics hay Stream API.
]]>