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

KHI AI LÀM "THẦY PHÁN": GIẢI MÃ GIẤC MƠ BẰNG HÌNH ẢNH CỰC "DÍNH" – TIN GIẢI TRÍ 27/03 🌙✨

27-03-2026 Trần Đình Trường
15 views + likes

Đã bao giờ bạn tỉnh dậy sau một giấc mơ cực đẹp nhưng lại tiếc hùi hụi vì không thể nhớ hết để kể cho bạn bè chưa? Chào mừng bạn đến với cuối tháng 3/2026 – nơi công nghệ sẽ giúp bạn "quay phim" lại chính giấc mơ của mình!

ĐIỂM TIN CÔNG NGHỆ 26/03: KỶ NGUYÊN AI TỰ CHỈNH SỬA VÀ BƯỚC TIẾN 6G 🚀🌐

26-03-2026 Trần Đình Trường
17 views + likes

Thứ Năm tuần này, làng công nghệ thế giới đang xôn xao với những công bố có thể thay đổi hoàn toàn cách chúng ta vận hành phần mềm và kết nối Internet. Cùng điểm qua nhé!

GÓC GIẢI TRÍ: KHI QUẦN ÁO CŨNG BIẾT "CHÉM GIÓ" – BẢN TIN 24/03 🤖👗

24-03-2026 Trần Đình Trường
20 views + likes

"Ê, hôm nay bạn hơi lười rồi đó, đứng dậy đi bộ tí đi!"? Chào mừng bạn đến với thế giới giải trí công nghệ đầy màu sắc của tháng 3/2026!

GÓC GIẢI TRÍ: KHI CÔNG NGHỆ KHÔNG CÒN "KHÔ KHAN" – BẢN TIN 23/03 🤖✨

23-03-2026 Trần Đình Trường
25 views + likes

Thứ Hai đầu tuần sẽ bớt căng thẳng hơn với những tin tức giải trí công nghệ cực kỳ thú vị mà mình vừa tổng hợp được. Xem xong đừng quên gửi cho đồng nghiệp cùng cười nhé!

ĐIỂM TIN CÔNG NGHỆ 21/03: VIỆT NAM BỨT PHÁ TRÊN BẢN ĐỒ SỐ TOÀN CẦU 🚀🌐

21-03-2026 Trần Đình Trường
33 views + likes

Thứ Bảy tuần này, làng công nghệ đang xôn xao với những thông tin không thể vui hơn cho người dùng tại Việt Nam và giới mộ điệu Apple, Nvidia