Junior — Middle
Hoe verschillen statische methoden in objectgeoriënteerd programmeren van methoden die in afgeleide klassen worden overschreven?
sobes.tech AI
Antwoord van AI
Statische methoden in Java behoren tot de klasse zelf, niet tot instanties. Ze worden aangeroepen via de naam van de klasse en kunnen niet worden overschreven in afgeleide klassen, omdat ze niet deelnemen aan polymorfisme.
In tegenstelling daaraan behoren methoden die overschreven kunnen worden (niet-statisch) tot de objecten en ondersteunen ze dynamisch polymorfisme. Wanneer een methode wordt aangeroepen via een referentie naar de basisklasse, wordt de daadwerkelijke implementatie bepaald door het type van het object tijdens runtime.
Voorbeeld:
class Parent {
static void staticMethod() {
System.out.println("Parent statische methode");
}
void instanceMethod() {
System.out.println("Parent instantie methode");
}
}
class Child extends Parent {
static void staticMethod() {
System.out.println("Child statische methode");
}
@Override
void instanceMethod() {
System.out.println("Child instantie methode");
}
}
public class Test {
public static void main(String[] args) {
Parent p = new Child();
p.staticMethod(); // Uitvoer: Parent statische methode
p.instanceMethod(); // Uitvoer: Child instantie methode
}
}
Hier wordt de statische methode opgeroepen op basis van het referentietype (Parent), en de niet-statische op basis van het objecttype (Child).