Wat is een statische methode?
Een objectgeoriënteerde computerprogrammeermethode die in een klasse wordt gedeclareerd maar niet afhankelijk is van een bepaalde instantie van die klasse, wordt een statische methode genoemd. De meeste programmeertalen nemen het trefwoord statisch op in de verklaring van een methode om een methode statisch te maken. Deze methoden behoren strikt tot de klasse waarin ze zijn opgenomen en niet tot enig object dat uit die klasse is geïnstantieerd. Ze worden vaak klassemethoden genoemd .
De letterlijke naam van de klasse wordt normaal gebruikt om toegang te krijgen tot een statische methode in plaats van ernaar te verwijzen met de naam van een geïnstantieerd object. Het is in Java toegestaan om objectnamen te gebruiken om naar deze methoden te verwijzen, maar het wordt ten zeerste afgeraden. Als een objectnaam wordt gebruikt, kan een persoon die de code leest een van deze methoden verwarren met een instantiemethode.
Statische methoden worden vaak gebruikt in gebruiksklassen die niet afhankelijk zijn van instantievariabelen van een bepaalde klasse. Ze worden ook gebruikt wanneer een programmeur toegang moet krijgen tot de methode, maar het is niet nodig om de klasse waarin deze zich bevindt te instantiëren. Hulpprogramma's worden normaal niet in objecten geïnstantieerd. Het zou ongebruikelijk zijn dat een hulpprogramma-methode objectinformatie moet wijzigen. Een methode uit de klasse java.lang.math, zoals pow (), zou een voorbeeld zijn van hoe dit type methode in een gebruiksklasse zou worden gebruikt.
Instantiemethoden hebben rechtstreeks toegang tot instantievariabelen, statische variabelen, instantiemethoden en statische methoden. Statische methoden hebben geen rechtstreeks toegang tot instantievariabelen en instantiemethoden. Vanwege de aard van instantiemethoden die betere toegang hebben tot klasseleden dan statische methoden, zijn instantiemethoden het type methoden dat normaal in reguliere klassen wordt gebruikt.
Een belangrijk nadeel van statische methoden treedt op tijdens overerving wanneer polymorfisme wordt gebruikt. Zolang de statische oudermethode niet definitief wordt verklaard, kan dezelfde onderliggende statische methode in de child class worden gecodeerd alsof deze wordt opgeheven. Dit wordt technisch verbergen genoemd in plaats van overschrijven, omdat een statische methode niet kan worden opgeheven.
Wanneer verbergen wordt gebruikt en de statische bovenliggende methode wordt gebruikt met behulp van de klassenaam, wordt de bovenliggende methode gebruikt. Als de overschreven onderliggende statische methode wordt geopend met behulp van de objectnaam, wordt de overschreven onderliggende methode gebruikt. Het probleem treedt op wanneer een onderliggend object als ouder wordt upcast. In dit geval zal bij een aanroep van de upcast-methode voor onderliggende statica de oudermethode worden gebruikt in plaats van de verwachte onderliggende methode. Met echt polymorfisme, zou de onderliggende methode degene zijn die na een upcast wordt geactiveerd.