Overloading e Overriding in Java

Indice Tutorial

Esistono due modalità in java per definire più versioni dello stesso metodo: l’overloading e l’overriding.

19 Java Method Overloading and Overriding Interview Questions and ...

Overloading

Si possono definire più versioni, dello stesso metodo, variando il numero e il tipo dei parametri, e/o la visibilità. L’overloading può essere fatto nella stessa classe o anche nelle classi derivate.

Esempio

class A {

	public void hello() {

	}
}

public class B extends A{
	
	public void hello(int i) {

	}
	public void hello(String g) {

	}
	public void hello(int i, String h, int k) {

	}
}

Se si tenta di modificare solo il tipo di ritorno di un metodo, ossia abbiamo due metodi identici tranne per il tipo di ritorno, otteniamo un errore di compilazione. Java li considera come se fossero due metodi uguali. Stessa cosa per la visibilità.

Esempio

package com;

class A {

	public void hello() {

	}
}

public class B extends A {

	public int hello(int i) {// errore: metodo duplicato

		return 1;
	}

	public String hello(int i) {// errore: metodo duplicato

		return "";
	}


}

Overriding

Una classe derivata può avere un metodo identico ad un metodo già presente nella classe base. Qesta operazione di riscrittura è nota come ovverride.

Esempio

package com;

class A {

	public void hello() {
		System.out.println("metodo del padre");
	}

	public void prova() {
		System.out.println("prova");
	}
}

public class B extends A {

	public void hello() {

		System.out.println("metodo del figlio");
	}

	public static void main(String[] args) {

		B tmp = new B();
		
		tmp.hello();//stampa "metodo del figlio", perchè stato fatto l'override del metodo
		tmp.prova();// stampa "prova", questo metodo appartiene al padre
	}

}

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *