Overloading (Nạp chồng phương thức)
Định nghĩa:
Là những phương thức cùng tên trong cùng một lớp nhưng khác kiểu tham số, số lượng tham số hoặc thứ tự tham số.
Ví dụ:
class Calculator {
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 đè phương thức)
Định nghĩa:
Là một lớp con định nghĩa lại phương thức đã có trong lớp cha, với cùng tên, cùng tham số, cùng kiểu trả về.
Ví dụ:
class Animal {
void sound() {
System.out.println("Animal makes a sound");
}
}
class Dog extends Animal {
@Override
void sound() {
System.out.println("Dog barks");
}
}
So sánh:
Tiêu chí | Overloading (Nạp chồng) | Overriding (Ghi đè) |
---|---|---|
Định nghĩa | Nhiều phương thức cùng tên nhưng khác tham số trong cùng 1 lớp | Ghi đè phương thức của lớp cha trong lớp con |
Tính kế thừa | Không yêu cầu | Yêu cầu có kế thừa (lớp con ghi đè phương thức lớp cha) |
Tham số | Phải khác nhau về số lượng, kiểu dữ liệu hoặc thứ tự | Phải giống hệt với phương thức lớp cha (tên, tham số) |
Thời điểm kiểm tra | Compile time (biên dịch) | Runtime (thời gian chạy) |
Mục đích | Tăng tính linh hoạt khi gọi hàm với nhiều kiểu tham số | Tùy chỉnh hành vi phương thức của lớp cha trong lớp con |
Tính đa hình | Đa hình tĩnh (static polymorphism) | Đa hình động (dynamic polymorphism) |
Be First to Comment