Автор оригинала: Pankaj Kumar.
Переопределение и перегрузка являются основными понятиями в программировании на Java. Это способы реализации полиморфизма в наших java-программах. Полиморфизм-одно из понятий УПС .
1. Что такое перегрузка и переопределение?
Когда два или более метода в одном классе имеют одно и то же имя, но разные параметры, это называется перегрузкой.
Когда сигнатура метода (имя и параметры) одинаковы в суперклассе и дочернем классе, это называется переопределением.
2. Переопределение против перегрузки
- Переопределение реализует полиморфизм времени выполнения, в то время как перегрузка реализует полиморфизм времени компиляции.
- Переопределение метода происходит между суперклассом и подклассом. Перегрузка происходит между методами одного и того же класса.
- Переопределяющие методы имеют одинаковую сигнатуру, т. е. одинаковое имя и аргументы метода. Имена перегруженных методов одинаковы, но параметры разные.
- При перегрузке вызываемый метод определяется во время компиляции. При переопределении вызов метода определяется во время выполнения на основе типа объекта.
- Если переопределение прерывается, это может вызвать серьезные проблемы в нашей программе, потому что эффект будет виден во время выполнения. В то время как если перегрузка прервется, возникнет ошибка во время компиляции, и ее легко исправить.
3. Пример перегрузки и переопределения
Вот пример перегрузки и переопределения в программе 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);
}
}
Метод process() перегружен в классе процессора. Затем они переопределяются в математическом процессоре дочернего класса.