Was ist eine statische Methode?
Eine objektorientierte Computerprogrammiermethode, die in einer Klasse deklariert wird, aber nicht von einer bestimmten Instanziierung dieser Klasse abhängt, wird als statische Methode bezeichnet. Die meisten Programmiersprachen enthalten das Schlüsselwort static in die Erklärung einer Methode, um eine Methode statisch zu machen. Diese Methoden gehören ausschließlich der Klasse, in der sie enthalten sind, und nicht zu einem Objekt, das aus dieser Klasse instanziiert ist. Sie werden häufig als Klassenmethoden bezeichnet . In Java ist es zulässig, Objektnamen zu verwenden, um auf diese Methoden zu verweisen, ist jedoch stark entmutigt. Wenn ein Objektname verwendet wird, kann eine Person, die den Code liest, eine dieser Methoden mit einer Instanzmethode verwechseln. Sie werden auch verwendet, wenn ein Programmierer mussGreifen Sie auf die Methode zu, aber es ist nicht erforderlich, die Klasse zu instanziieren, in der sie enthalten ist. Die Versorgungsklassen werden normalerweise nicht in Objekte instanziiert. Es wäre ungewöhnlich, dass eine Versorgungsmethode die Änderung von Objektinformationen benötigt. Eine Methode aus der Klasse java.lang.math, wie z. B. Pow (), wäre ein Beispiel dafür, wie diese Art von Methode in einer Versorgungsklasse verwendet wird.
Instanzmethoden können direkt auf Instanzvariablen, statische Variablen, Instanzmethoden und statische Methoden zugreifen. Statische Methoden können nicht direkt auf Instanzvariablen und Instanzmethoden zugreifen. Aufgrund der Art von Instanzmethoden, die einen besseren Zugang zu Klassenmitgliedern haben als statische Methoden, sind Instanzmethoden die Art von Methoden, die normalerweise in regulären Klassen verwendet werden.
Ein Hauptnachteil statischer Methoden tritt während der Vererbung auf, wenn Polymorphismus verwendet wird. Solange die übergeordnete statische Methode nicht endgültig erklärt wird, das gleiche KindDie statische Methode kann in der untergeordneten Klasse so codiert werden, als würde sie außer Kraft gesetzt. Dies wird technisch als Versteck anstatt überschreiben, da eine statische Methode nicht überschrieben werden kann.
Wenn das Versteck verwendet wird, wird die übergeordnete Methode verwendet, wenn die übergeordnete statische Methode unter Verwendung des Klassennamens zugegriffen wird. Wenn die statische unterschriebene unterschriebene Methode unter Verwendung des Objektnamens zugegriffen wird, wird die überschriebene untergeordnete Methode verwendet. Das Problem tritt auf, wenn ein untergeordnetes Objekt als Elternteil aufgelassen wird. In diesem Fall wird ein Aufruf der Upcast Child Static Methode die übergeordnete Methode anstelle der erwarteten untergeordneten Methode verwendet. Mit dem echten Polymorphismus wäre die untergeordnete Methode die nach einem Upcast aktiviert.