Рубрики
Без рубрики

Переопределение и перегрузка в Java

Переопределение и перегрузка-это способы реализации полиморфизма в Java. Переопределение против перегрузки в Java, время выполнения против полиморфизма во время компиляции в Java.

Автор оригинала: Pankaj Kumar.

Переопределение и перегрузка являются основными понятиями в программировании на Java. Это способы реализации полиморфизма в наших java-программах. Полиморфизм-одно из понятий УПС .

1. Что такое перегрузка и переопределение?

Когда два или более метода в одном классе имеют одно и то же имя, но разные параметры, это называется перегрузкой.

Когда сигнатура метода (имя и параметры) одинаковы в суперклассе и дочернем классе, это называется переопределением.

2. Переопределение против перегрузки

  1. Переопределение реализует полиморфизм времени выполнения, в то время как перегрузка реализует полиморфизм времени компиляции.
  2. Переопределение метода происходит между суперклассом и подклассом. Перегрузка происходит между методами одного и того же класса.
  3. Переопределяющие методы имеют одинаковую сигнатуру, т. е. одинаковое имя и аргументы метода. Имена перегруженных методов одинаковы, но параметры разные.
  4. При перегрузке вызываемый метод определяется во время компиляции. При переопределении вызов метода определяется во время выполнения на основе типа объекта.
  5. Если переопределение прерывается, это может вызвать серьезные проблемы в нашей программе, потому что эффект будет виден во время выполнения. В то время как если перегрузка прервется, возникнет ошибка во время компиляции, и ее легко исправить.

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() перегружен в классе процессора. Затем они переопределяются в математическом процессоре дочернего класса.