
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ề overloading và overriding 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.
0 Nhận xét