Definition von Instanzmethoden und Klassenmethoden
Beim Deklarieren einer Methode ist der Methodentyp, der nicht durch das Schlüsselwort static geändert wird, eine Instanzmethode, und der Methodentyp, der durch das Schlüsselwort static geändert wird, ist eine Klassenmethode, die auch als statische Methode bezeichnet wird.
Zum Beispiel:
classMain{inta;floatmax(floatb,floatc){//Instanzmethode...}staticfloatmax(floatd,floate){//Klassenmethode...}}
Der Unterschied zwischen Instanzmethoden und Klassenmethoden
1. Objekt ruft Instanzmethode auf:
Wenn die Bytecode-Datei einer Klasse in den Speicher geladen wird, wird der Instanzmethode der Klasse keine Eintragsadresse zugewiesen. Erst nachdem die Klasse ein Objekt erstellt hat, wird der Instanzmethode in der Klasse eine Eintragsadresse zugewiesen Die Instanzmethode kann von jedem von der Klasse erstellten Objektaufruf ausgeführt werden.
Beachten:
Wenn wir das erste Objekt erstellen, wird der Instanzmethode in der Klasse eine Eintragsadresse zugewiesen. Wenn das Objekt erneut erstellt wird, wird die Eintragsadresse nicht mehr zugewiesen. Das heißt, die Eintragsadresse der Methode wird von allen Objekten gemeinsam genutzt . Wenn alle Objekte vorhanden sind, wird die Eingabeadresse der Methode abgebrochen.
Instanzmethoden können nicht nur Instanzvariablen, sondern auch Klassenvariablen bedienen. Wenn ein Objekt eine Instanzmethode aufruft, sind die in der Methode angezeigten Instanzvariablen und Klassenvariablen dem Objekt zugewiesene Variablen, die Klassenvariablen werden jedoch mit allen anderen Objekten gemeinsam genutzt.
2. Rufen Sie die Klassenmethode mit dem Klassennamen auf:
Für Klassenmethoden in einer Klasse wird beim Laden der Klasse in den Speicher die entsprechende Eintragsadresse zugewiesen, sodass die Klassenmethode nicht nur von jedem von der Klasse erstellten Objekt aufgerufen und ausgeführt werden kann, sondern auch direkt über aufgerufen werden kann Klassenname. Die Eingabeadresse der Klassenmethode wird erst gelöscht, wenn das Programm beendet wird.
Beachten:
Instanzmethoden können nicht über den Klassennamen, sondern nur über Objekte aufgerufen werden. Und da den Instanz-Mitgliedsvariablen kein Speicher zugewiesen wurde, bevor die Klasse das Objekt erstellt, kann die Klassenmethode die Instanzvariablen nicht bedienen.
3. Gestaltungsprinzipien von Klassenmethoden:
Wenn eine Methode keine Instanzvariablen in der Klasse bedienen muss, um die Anforderungen des Programms zu erfüllen, können Sie erwägen, eine solche Methode als statische Methode zu entwerfen.
Bei statischen Methoden können Sie sie direkt mit dem Klassennamen aufrufen, ohne ein Objekt zu erstellen. Durch das Erstellen eines Objekts wird Instanzvariablen in der Klasse Speicherplatz zugewiesen.