Junior — Middle
In che modo i metodi statici nella programmazione orientata agli oggetti differiscono dai metodi sovrascritti nelle classi derivate?
sobes.tech AI
Risposta dell'AI
I metodi statici in Java appartengono alla classe stessa, non agli istanti. Vengono chiamati tramite il nome della classe e non possono essere sovrascritti nelle classi derivate, poiché non partecipano al polimorfismo.
Al contrario, i metodi che possono essere sovrascritti (non statici) appartengono agli oggetti e supportano il polimorfismo dinamico. Quando si chiama un metodo tramite un riferimento alla classe base, l'implementazione reale viene determinata dal tipo dell'oggetto durante l'esecuzione.
Esempio:
class Parent {
static void staticMethod() {
System.out.println("Metodo statico di Parent");
}
void instanceMethod() {
System.out.println("Metodo di istanza di Parent");
}
}
class Child extends Parent {
static void staticMethod() {
System.out.println("Metodo statico di Child");
}
@Override
void instanceMethod() {
System.out.println("Metodo di istanza di Child");
}
}
public class Test {
public static void main(String[] args) {
Parent p = new Child();
p.staticMethod(); // Stampa: Metodo statico di Parent
p.instanceMethod(); // Stampa: Metodo di istanza di Child
}
}
Qui, il metodo statico viene chiamato in base al tipo di riferimento (Parent), mentre il metodo non statico in base al tipo dell'oggetto (Child).