Overloading trong Java

Overloading tạm hiểu là phương thức nạp chồng trong Java. Nhưng đó là khái niệm nếu bạn chỉ lướt qua thôi thì không thể hiểu được. Vì vậy bài này mình sẽ cùng bạn đi tìm câu trả lời cho Overloading trong Java dùng để làm gì và sử dụng như thế nào.

Overloading trong Java là gì?

Overloading là nhiều phương thức (Method) trong một lớp (Class) dùng chung tên nhưng tham số truyền vào lại khác nhau.

Hãy trở về thế giới thực tại và xem xét ví dụ sau:

Bạn có một chiếc xe đạp. Khi đạp phanh thì xe sẽ dừng lại. Phương thức phanh sẽ đại diện cho hành vi dừng xe.

Với một chiếc ô tô cũng với phương thức phanh nhưng nó lại được sử dụng bằng tay.

Như bạn thấy đấy 2 đối tượng xe đạp và ô tô đều dùng phương thức phanh. Tuy rằng hành động là khác nhau.

Hãy liên hệ với đối tượng trong Java. Nếu hành vi của nhiều phương thức có cùng tên thực hiện và cùng một việc nhưng có số lượng tham số hoặc các loại tham số khác nhau, nó được gọi là Overloading.

Quy tắc Overloading trong Java

Sau đây là danh sách các quy tắc mà phương thức nạp chồng có thể được thực hiện trong Java.

  1. Tên phương thức phải giống nhau
  2. Các tham số phải khác nhau, tức là mỗi phương thức nạp chồng phải nhận một danh sách các kiểu tham số duy nhất.

Kiểu 1:

void run(int numberA, int numberB); // Có hai tham số a và b với kiểu dữ liệu int. 
void run(int numberA, float numberB); // Ở đây, hai tham số a, b với kiểu dữ liệu int và float. Kiểu dữ liệu khác nhau trong cả hai trường hợp.

Giả sử khi thêm đối số int run(10, 20) thì chương trình sẽ chạy cái đầu tiên.

Tiếp theo run(10, 20.5f), thì JVM sẽ thực thi phương thức thứ hai.

Kiểu 2:

void number(int a, int b); // Hai tham số a và b với kiểu dữ liệu int. 
void number(int a, int b, int c); // Ba tham số a, b, c với kiểu dữ liệu int. Ở đây, số lượng tham số là khác nhau nhưng kiểu dữ liệu thì giống nhau.

Kiểu 3:

void myNum(int a, double b); 
void myNum(double a, float a);

Như bạn thấy, chuỗi kiểu dữ liệu của các tham số là khác nhau.

Hãy thực hiện ví dụ sau:

public class PhuongTien {

    public PhuongTien() {
        // Constructor
    }
    
    void phanh(String hanhvi) {
        System.out.println("Xe đạp đã phanh");
    }
    
    void phanh(int hanhvi) {
        System.out.println("Xe ô tô đã phanh");
    }

    public static void main(String[] args) {
        
        PhuongTien obj = new PhuongTien();
        obj.phanh("Đạp phanh");
    }

}

Khi truyền đối số vào phanh(“Đạp phanh”) kiểu String thì phương thức đầu tiên đã được thực thi.

Tiếp theo mình thay đổi đối số phanh(10) thành kiểu int. Thì lúc này phương thức thức hai được thực thi.

overloading-java-1

Lợi thế của việc sử dụng Overloading trong Java

  1. Giúp làm tăng khả năng đọc, hiểu chương trình
  2. Nó giúp đạt được tính đa hình thời gian biên dịch
  3. Giúp tránh lặp lại cùng một đoạn mã trong các phương pháp khác nhau

Kết thúc bài học về Overloading bạn cảm thấy nó có khó không? Hi vọng với bài viết này đã giúp bạn hiểu rõ hơn về phương thức nạp chồng trong lập trình hướng đối tượng Java rồi.

Related Posts

Next.js – Khám phá Framework JavaScript tuyệt vời cho phát triển ứng dụng web

Giới thiệu về Next.js Next.js là một framework JavaScript mã nguồn mở và phổ biến được sử dụng để xây dựng các ứng dụng web hiệu suất…

Tạo Form đăng ký bằng Javascript

Ghi đè trong java, cách thực hiện chi tiết

Trong lập trình hướng đối tượng, ghi đè là một kỹ thuật cho phép các đối tượng con ghi đè lại phương thức của đối tượng cha…

noi-chuoi-java

Nối chuỗi trong Java

Nối chuỗi trong Java là phương pháp nối hai chuỗi riêng biệt lại với nhau. Bạn có thể sử dụng toán tử (+) hoặc phương thức concat()….

vuejs-la-gi

Vuejs là gì? Tìm hiểu tổng quan về Vue.js

JavaScript là ngôn ngữ lập trình phía Front end có độ phổ biến rất lớn. Hàng loạt Framework Js được ra đời được viết từ nó. Và…

Overriding-java-1

Overriding trong Java

Bài viết này sẽ giúp bạn hiểu về tính đa hình trong Java thông qua Overriding. Nếu bạn đã tìm hiểu về kế thừa lớp sẽ thấy…

javascript

Cách gọi hàm JavaScript trong HTML

Hàm (Functions) trong JavaScript nếu không gọi đến nó sẽ không thực thi chức năng. Vì thế để thực hiện một nhiệm vụ nào đó ở trong…