Overloading và Overriding có gì khác nhau?

Overloading và Overriding là hai khái niệm quan trọng trong lập trình hướng đối tượng, và chúng có những sự khác biệt cơ bản:

Overloading (Nạp chồng)

Khái niệm:

  • Overloading là việc định nghĩa nhiều phương thức cùng tên trong cùng một lớp, nhưng có danh sách tham số khác nhau (về số lượng hoặc kiểu dữ liệu).

Đặc điểm:

  • Phương thức nạp chồng phải có cùng tên nhưng phải có khác biệt trong danh sách tham số.
  • Kiểu trả về có thể giống hoặc khác nhau.
  • Không liên quan đến tính kế thừa.
  • Được sử dụng để cung cấp các phiên bản khác nhau của một phương thức nhằm xử lý các loại dữ liệu đầu vào khác nhau.

Ví dụ:

class MathUtil {
   int add(int a, int b) {
       return a + b;
   }
   
   double add(double a, double b) {
       return a + b;
   }
   
   int add(int a, int b, int c) {
       return a + b + c;
   }
}
 

Overriding (Ghi đè)

Khái niệm:

  • Overriding là việc định nghĩa lại một phương thức trong lớp con có cùng chữ ký (signature) với phương thức trong lớp cha.

Đặc điểm:

  • Phương thức ghi đè phải có cùng tên, cùng kiểu trả về, và cùng danh sách tham số.
  • Liên quan đến tính kế thừa: phương thức ghi đè nằm trong lớp con và phương thức bị ghi đè nằm trong lớp cha.
  • Được sử dụng để cung cấp cách triển khai cụ thể của phương thức trong lớp con.

Ví dụ:

class Animal {
   void makeSound() {
       System.out.println("Some sound");
   }
}

class Dog extends Animal {
   @Override
   void makeSound() {
       System.out.println("Bark");
   }
}
 

Tóm tắt sự khác biệt chính

Overloading:

  • Cùng tên phương thức, khác tham số.
  • Không liên quan đến kế thừa.
  • Được thực hiện trong cùng một lớp.
  • Cho phép định nghĩa nhiều phiên bản của một phương thức với tham số khác nhau.

Overriding:

  • Cùng tên phương thức, cùng tham số.
  • Liên quan đến kế thừa.
  • Thực hiện giữa lớp cha và lớp con.
  • Cho phép lớp con cung cấp triển khai cụ thể của một phương thức đã được định nghĩa trong lớp cha.
  •  

Hiểu rõ sự khác biệt này giúp lập trình viên sử dụng đúng cách các tính năng của ngôn ngữ lập trình hướng đối tượng để xây dựng hệ thống phần mềm hiệu quả và dễ bảo trì.

Bài viết liên quan

Nội dung bài viết: ĐIỂM TIN 09/06: WWDC 2026 – SIRI "LỘT XÁC" TOÀN DIỆN VÀ KỶ NGUYÊN APPLE INTELLIGENCE THẾ HỆ MỚI 🚀✨

09-06-2026 Trần Đình Trường
138 views + likes

"Táo khuyết" đã chính thức tung ra những quân bài chiến lược để tái định nghĩa trải nghiệm người dùng thông qua AI.

ĐIỂM TIN ĐẦU THÁNG 6: NVIDIA TUNG "SIÊU CHÍP" 1 PETAFLOP, APPLE SẴN SÀNG REBUILD SIRI TỪ SƠ KHAI 🚀💻

03-06-2026 Trần Đình Trường
129 views + likes

AI không còn là cuộc đua trên đám mây (Cloud) nữa, nó đã chính thức đổ bộ xuống từng bo mạch phần cứng và hệ điều hành cục bộ (On-device) ngay trên bàn làm việc của anh em.

TỔNG HỢP GOOGLE I/O 2026: KỶ NGUYÊN "AGENTIC AI" BÙNG NỔ VÀ BƯỚC CHUYỂN MÌNH CỦA ANDROID 17 🚀🌐

20-05-2026 Trần Đình Trường
168 views + likes

Đêm qua, sự kiện Google I/O 2026 đã chính thức diễn ra và đúng như dự đoán, Google đã mang đến một bữa tiệc công nghệ "ngập tràn AI" nhưng ở một cấp độ hoàn toàn mới: Kỷ nguyên của các Tác nhân tự chủ (Agentic AI).

ĐIỂM TIN 19/05: ĐÊM NAY GOOGLE I/O 2026 KHAI MẠC – CHỜ ĐỢI SỰ BÙNG NỔ CỦA ANDROID 17 VÀ SIÊU AI 🚀🌐

19-05-2026 Trần Đình Trường
177 views + likes

Hôm nay là ngày mà toàn bộ giới lập trình viên và các tín đồ công nghệ trên thế giới đổ dồn sự chú ý về Mountain View, California. Siêu sự kiện thường niên Google I/O 2026 sẽ chính thức bắt đầu phần Keynote quan trọng nhất vào đêm nay.

ĐIỂM TIN 18/05: TRƯỚC GIỜ G GOOGLE I/O 2026 VÀ CÚ BẮT TAY LỊCH SỬ CỦA AI AGENTS 🚀🌐

18-05-2026 Trần Đình Trường
143 views + likes

Đầu tuần này, cả thế giới công nghệ gần như nín thở để hướng về Shoreline Amphitheatre (California, Mỹ) – nơi siêu sự kiện Google I/O 2026 sẽ chính thức mở màn vào ngày mai.