it-swarm.com.de

Java-Methoden vs. Funktionen

Ich habe mich gerade entschlossen, meine MATLAB-Programmierkenntnisse mit konsistenterer und strengerer Java-Codierung zu integrieren. Deshalb hoffe ich, dass es keine zu naive Frage sein wird.

Ich würde gerne wissen, ob es einen Grund gibt, warum Java Funktionen als methods und nicht als functions bezeichnet, wie dies bei vielen anderen Programmiersprachen der Fall ist.

Liegt es an der inneren OOP-Java-Natur im Vergleich zu prozeduralen Sprachen wie C/C++? oder gibt es andere wichtige (oder subtile) gründe?

Danke im Voraus.

11
fpe

Meiner Meinung nach diese Figur http://www.jot.fm/issues/issue_2008_03/article4/images/figure2.gif

one, two and three dimensional method dispatch

aus http://www.jot.fm/issues/issue_2008_03/article4/ hilft, einen der Hauptunterschiede zwischen OO und der prozeduralen Programmierung zu verstehen. Grundsätzlich ist das die Idee 

Die prozedurale Programmierung bietet nur eine Dimension, um eine Recheneinheit mit einem Namen zu verknüpfen. Hier werden Prozeduraufrufe oder -namen Direkt den Implementierungen von Prozeduren zugeordnet. In Abbildung 1 lässt ein Aufruf von M1 keine andere Wahl als den Aufruf der einzigen Implementierung der -Prozedur m1

während

Objektorientierte Programmierung fügt der prozeduralen Programmierung eine weitere Dimension für die Namensauflösung Hinzu. Zusätzlich zu der Methode oder dem Prozedurnamen Berücksichtigt der Nachrichtenversand den Nachrichtenempfänger, wenn eine Methode gesucht wird. In Abbildung 2b sehen wir zwei Implementierungen der Methode m1. Die Auswahl der geeigneten Methode Hängt nicht nur vom Nachrichtennamen m1 ab, sondern auch vom Empfänger von Der eigentlichen Nachricht, hier Ry

der dritte Abschnitt der Abbildung (c) bezieht sich auf die subjektorientierte Programmierung, bei der das Verhalten eines Objekts (die aufgerufene Methode) nicht nur vom Objektstatus abhängt, sondern auch von den Subjekten, die es aufrufen (oder beobachten) . Dies ist jedoch eigentlich nicht im Rahmen Ihrer Frage. 

3
Sindico

Nun, es gibt einen kleinen Unterschied zwischen einer Methode und einer Funktion.

Eine Funktion ist nur ein Code, den Sie jederzeit über den Namen aufrufen können. Sie können ihr auch als Parameter bekannte Argumente übergeben. Sie können das Ergebnis auch von jeder Funktion erhalten, d. H. Dem Rückgabewert der Funktion.

Eine Methode ist jedoch ein Code, der mit seinem Namen aufgerufen wird, jedoch einem beliebigen Objekt zugeordnet ist. Sie können auch Parameter an Methoden übergeben, und Sie können auch Rückgabewerte von Methoden erhalten, die jedoch immer mit diesen verknüpft werden einige Objekte.

BEARBEITET

Java ist objektorientiert. In den meisten Fällen kann Java-Code nicht ohne Klassen ausgeführt werden. In C++ kann der Code jedoch ohne Klassen ausgeführt werden. In Java wird es also Klassen geben und Code wird in Klassen geschrieben, so dass sie Methoden anstelle von Funktionen genannt werden, da sie Objekten zugeordnet werden.

In C++ können Sie jedoch eine Funktion haben, die durch explizite Übergabe von Werten aufgerufen werden kann.

In einfachen Worten kann man sagen, dass eine Methode eine Funktion ist, die sich auf ein Objekt bezieht.

4
gprathour

Ich kann mir nicht helfen, viel unnötiges Drama in diesem zu denken. "Methoden" ist sicher nur ein Name, den Java zufällig verwendet, für Unterprogramme, die Parameter erfordern oder nicht erfordern und möglicherweise einen Wert zurückgeben.

Z.B. Gültige "Methoden" könnten wie folgt sein, ohne in OO Reinheit, kanonische Definitionen von "Funktionen" usw. zu gelangen. Beide der folgenden Werte können den aktuellen "state" (Instanzvariablenwerte) eines Objekts auch bei ihrer Ausführung verwenden:

// kind of a function, returns a value
public int calculateStuff(int param1)

// more of a procedure, presumably just "does stuff", returns nothing
public void doStuff(int param1)
1
Brian

Sie sind das Gleiche. In C++ werden sie normalerweise als Funktionen bezeichnet. Java bezeichnet sie normalerweise als Methoden.

Methoden sind normalerweise einer Klasse zugeordnet.

Gelegentlich hört man auch "Klassenfunktion", was nur eine Methode ist.

Es ist egal, die Leute werden wissen, wovon Sie sprechen, wenn Sie sie auch anrufen. 

0
Captain Skyhawk