Header Ads Widget

Responsive Advertisement

Nổi bật

6/recent/ticker-posts

So sánh Overloading và Overriding trong Java

OverridingOverloading là những khái niệm cốt lõi trong lập trình Java. Chúng là những cách để triển khai tính đa hình trong các chương trình java của chúng tôi. Đa hình là một trong những khái niệm OOPS.



    1. Overloading và Overriding là gì?

    Khi hai hoặc nhiều phương thức trong cùng một lớp có cùng tên nhưng khác tham số, nó được gọi là Overloading.

    Khi chữ ký của phương thức (tên và các tham số) giống nhau trong lớp cha và lớp con, nó được gọi là Overriding.


    2. Ghi đè so với quá tải

    Ø  Overriding thực hiện Runtime Polymorphism trong khi Overloading thực hiện Compile time polymorphism.
    Ø  Phương thức Overriding xảy ra giữa lớp cha và lớp con. Overloading xảy ra giữa các phương thức trong cùng một lớp.
    Ø  Các phương thức Overriding có cùng một chữ ký tức là cùng tên và các đối số phương thức. Tên phương thức overloaded giống nhau nhưng các tham số khác nhau.
    Ø  Với Overloading, phương thức gọi được xác định tại thời điểm biên dịch. Với overriding, cuộc gọi phương thức được xác định trong runtime dựa trên kiểu đối tượng.
    Ø  Nếu override breaks, nó có thể gây ra sự cố nghiêm trọng trong chương trình của chúng tôi vì hiệu ứng sẽ hiển thị trong runtime. Trong khi nếu overloading bị phá vỡ, lỗi runtime sẽ đến và rất dễ sửa.

    3. Ví dụ về quá tải và ghi đè


    Đây là một ví dụ về overloadingoverriding trong một chương trình Java.

    package com.journaldev.examples;
    import java.util.Arrays;

    public class Processor {

       
    public void process(int i, int j) {
           
    System.out.printf("Processing two integers:%d, %d", i, j);
        }

       
    public void process(int[] ints) {
           
    System.out.println("Adding integer array:" + Arrays.toString(ints));
        }

       
    public void process(Object[] objs) {
           
    System.out.println("Adding integer array:" + Arrays.toString(objs));
        }
    }


    class MathProcessor extends Processor {
       
    @Override
       
    public void process(int i, int j) {
           
    System.out.println("Sum of integers is " + (i + j));
        }
       
    @Override
       
    public void process(int[] ints) {
           
    int sum = 0;
           
    for (int i : ints) {
                sum +=
    i;
            }
           
    System.out.println("Sum of integer array elements is " + sum);
        }
    }



    Phương thức process() được overloaded trong lớp Processor. Sau đó, chúng được overridden trong MathProcessor lớp con.

    Bài viết được dịch lại từ journaldev.com. Cảm ơn bạn đã xem bài viết! Nếu có bất cứ lỗi sai nào trong bài bạn có thể góp ý cho chúng tôi bằng cách bình luận bên dưới.

    Đăng nhận xét

    0 Nhận xét