Methode: Unterschied zwischen den Versionen
Hauer (Diskussion | Beiträge) |
Hauer (Diskussion | Beiträge) (→Statisch vs. Nicht-Statisch) |
||
Zeile 17: | Zeile 17: | ||
Wird auf einem Objekt eine Methode ausgeführt wechselt das Programm in einen nicht-statischen Kontext, in dem die Ausführung des Programmes abhängig vom Zustand des Objektes ist, auf dem die Methode ausgeführt wird. Innerhalb einer Klasse selbst können aus einem statischen Kontext keine nicht-statischen Methoden aufgerufen werden oder nicht-statische Attribute manipuliert werden (welches Objekt soll dies auch ausführen?). Möchte man dies tun, muss man aus dem statischen Kontext heraus eine Objektinstanz erstellen und auf dem erstellen Objekt die gewünschte Methode aufrufen. Ob dies für den Ablauf des Programmes Sinn ergibt oder nicht, sei hier nicht näher behandelt (in den meisten Fällen tut es dies jedoch nicht ...) | Wird auf einem Objekt eine Methode ausgeführt wechselt das Programm in einen nicht-statischen Kontext, in dem die Ausführung des Programmes abhängig vom Zustand des Objektes ist, auf dem die Methode ausgeführt wird. Innerhalb einer Klasse selbst können aus einem statischen Kontext keine nicht-statischen Methoden aufgerufen werden oder nicht-statische Attribute manipuliert werden (welches Objekt soll dies auch ausführen?). Möchte man dies tun, muss man aus dem statischen Kontext heraus eine Objektinstanz erstellen und auf dem erstellen Objekt die gewünschte Methode aufrufen. Ob dies für den Ablauf des Programmes Sinn ergibt oder nicht, sei hier nicht näher behandelt (in den meisten Fällen tut es dies jedoch nicht ...) | ||
− | In der Praxis möchte man in der objektorientierten Programmierung so schnell wie möglich den Ablauf eines Programmes in einen an ein Objekt gebundenen, nicht-statischen Kontext überführen und, außer in Spezialfällen<ref>Verwendung von hilfreichen | + | In der Praxis möchte man in der objektorientierten Programmierung so schnell wie möglich den Ablauf eines Programmes in einen an ein Objekt gebundenen, nicht-statischen Kontext überführen und, außer in Spezialfällen<ref>Verwendung von hilfreichen Funktionen, die keinen Objektzustand benötigen und keinen neuen erzeugen, wie z.B. mathematische Funktionen wie <code>cos</code>.</ref>, in einem solchen verbleiben. |
= Fußnoten = | = Fußnoten = | ||
<references /> | <references /> |
Version vom 7. Dezember 2015, 19:17 Uhr
Eine Methode definiert ein (Teil-)Programm.
Üblicherweise wird eine Methode von einer Funktion unterschieden: Eine Methode wird auf einem Objekt ausgeführt, eine Funktion wird nach Belieben aufgerufen. Bei der Deklaration unterscheidet man zwischen Methode und Funktion nur durch den Modifikator static. Eine Funktion wird im statischen Kontext der Klasse ausgeführt und hat daher nur Zugriff auf Klassenattribute und lokale Variablen, während eine Methode zusätzlich Zugriff auf Attribute der Objektinstanz hat.
Inhaltsverzeichnis
Syntaxdiagramm
Verwendung
Eine (statische) Methode wird innerhalb des Klassenrumpfes mit Angabe der Modifikatoren, des Rückgabetyps und des Namens angegeben, gefolgt von in runden Klammern stehenden Parametern und dem eigentlichen Rumpf der Methode innerhalb von geschweiften Klammern in Form eines Blockes. Wird der Modifikator abstract verwendet, so wird nur die Signatur der Methode, nicht aber ihr Rumpf angegeben und die Deklaration mit einem ; abgeschlossen.
Statisch vs. Nicht-Statisch
Ein Java-Programm beginnt immer in der main-Methode im statischen Kontext. Das heißt, die Ausführung des Programmes findet nicht innerhalb einer Instanz eines Objektes statt.
Wird auf einem Objekt eine Methode ausgeführt wechselt das Programm in einen nicht-statischen Kontext, in dem die Ausführung des Programmes abhängig vom Zustand des Objektes ist, auf dem die Methode ausgeführt wird. Innerhalb einer Klasse selbst können aus einem statischen Kontext keine nicht-statischen Methoden aufgerufen werden oder nicht-statische Attribute manipuliert werden (welches Objekt soll dies auch ausführen?). Möchte man dies tun, muss man aus dem statischen Kontext heraus eine Objektinstanz erstellen und auf dem erstellen Objekt die gewünschte Methode aufrufen. Ob dies für den Ablauf des Programmes Sinn ergibt oder nicht, sei hier nicht näher behandelt (in den meisten Fällen tut es dies jedoch nicht ...)
In der Praxis möchte man in der objektorientierten Programmierung so schnell wie möglich den Ablauf eines Programmes in einen an ein Objekt gebundenen, nicht-statischen Kontext überführen und, außer in Spezialfällen[1], in einem solchen verbleiben.
Fußnoten
- ↑ Verwendung von hilfreichen Funktionen, die keinen Objektzustand benötigen und keinen neuen erzeugen, wie z.B. mathematische Funktionen wie
cos
.