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

ĐIỂM TIN 13/05: VIỆT NAM TRỞ THÀNH "CỨ ĐIỂM" BÁN DẪN & BÁO ĐỘNG ĐỎ NGUỒN CUNG CHIP AI 🚀💻

13-05-2026 Trần Đình Trường
10 views + likes

Dòng chảy công nghệ ngày hôm nay ghi nhận những bước đi chiến lược tại thị trường Việt Nam cùng những biến động lớn trong chuỗi cung ứng phần cứng toàn cầu. Cùng mình cập nhật ngay những tiêu điểm "nóng" nhất!

ĐIỂM TIN 07/05: LONG THÀNH TỔNG LỰC "VỀ ĐÍCH" & LÀN SÓNG "AGENTIC AI" TÁI ĐỊNH HÌNH CÔNG NGHỆ 🚀✨

07-05-2026 Trần Đình Trường
35 views + likes

Bản tin sáng nay mang đến những cập nhật quan trọng từ đại công trường Long Thành và những xu hướng công nghệ đang làm rung chuyển giới Silicon Valley. Cùng điểm qua những tiêu điểm không thể bỏ lỡ!

ĐIỂM TIN 24/04: CÔNG NGHỆ 6G LÊN BÀN NGHỊ SỰ VÀ "LỰC ĐẨY" MỚI CHO LONG THÀNH 🚀📶

24-04-2026 Trần Đình Trường
54 views + likes

Bản tin sáng nay mang đến những tín hiệu cực kỳ mạnh mẽ về một tương lai kết nối không giới hạn và sự quyết tâm đưa siêu dự án Long Thành về đích đúng hẹn. Cùng mình điểm qua nhé!

ĐIỂM TIN 20/04: TẦM NHÌN CHIẾN LƯỢC 2030 VÀ CUỘC ĐUA CÔNG NGHỆ TỰ TRỊ 🚀🌐

20-04-2026 Trần Đình Trường
43 views + likes

Hôm nay là một ngày bận rộn của cả hệ thống chính trị và giới công nghệ khi những kế hoạch lớn cho 5 năm tới chính thức được đưa lên bàn nghị sự. Cùng mình cập nhật những thông tin "sát sườn" nhất nhé!

ĐIỂM TIN 18/04: PIN "XÀI CẢ TUẦN" VÀ CÁNH TAY ROBOT "TỬ THẦN" DƯỚI ĐÁY BIỂN 🔋🤖

18-04-2026 Trần Đình Trường
42 views + likes

Cuối tuần nhưng dòng chảy công nghệ chưa bao giờ dừng lại. Bản tin sáng nay sẽ đưa bạn đi từ túi quần (smartphone) xuống tận đáy đại dương 4.000m. Cùng điểm qua nhé!