Skip to content

Overloading and Overriding

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ĩaNhiều phương thức cùng tên nhưng khác tham số trong cùng 1 lớpGhi đè phương thức của lớp cha trong lớp con
Tính kế thừaKhông yêu cầuYê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 traCompile time (biên dịch)Runtime (thời gian chạy)
Mục đíchTă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)

Published inAll

Be First to Comment

Leave a Reply

Your email address will not be published. Required fields are marked *