Java Ist eine Methode = Funktion in Java ?

vram78

Lieutenant
Registriert
Dez. 2015
Beiträge
712
Eine Methode ist doch nix anderes als eine Funktion oder?


MFG
 
Ist es wirklich schneller hier einen Thread zu erstellen als das kurz zu googlen?
Die beiden sind sich sehr ähnlich, es gibt aber leichte Unterschiede in der Definition.
 
Das hat nichts direkt mit Java zu tun, sondern damit ob eine Wert zurückgegeben wird nach der Ausführung. Aber auch das ist nicht mehr eindeutig, weil es in der Zwischenzeit meist synonym verwendet wird.

Ist für die Entwicklung eigentlich auch irrelevant.
 
Also ich habs so gelernt:
Methoden werden Funktionen innerhalb Klassen genannt
Funktionen sind... naja, Funktionen halt. Keinen Bezug zu Klassen, Beispiel wäre hier eine einfache Lib mit unterschiedlichen Hilfsfunktionen.
 
amokkx schrieb:
Also ich habs so gelernt:
Methoden werden Funktionen innerhalb Klassen genannt
Funktionen sind... naja, Funktionen halt. Keinen Bezug zu Klassen, Beispiel wäre hier eine einfache Lib mit unterschiedlichen Hilfsfunktionen.

Wäre das nicht ein Interface ?
 
Zespire schrieb:
Wäre das nicht ein Interface ?

In Java packt man reine (utility) Funktionen üblicherweise als Statische Methoden irgendwo hin, also als Interface kann man sowas sicherlich nicht bezeichnen.
 
Aber dann hätten die doch wieder den Bezug zu einer Klasse oder verstehe ich hier "Bezug" falsch .
 
rg88 schrieb:
Das hat nichts direkt mit Java zu tun, sondern damit ob eine Wert zurückgegeben wird nach der Ausführung. Aber auch das ist nicht mehr eindeutig, weil es in der Zwischenzeit meist synonym verwendet wird.

Redest du da nicht eher von dem Unterschied zwischen einer Prozedur und einer Funktion?
 
Zespire schrieb:
Aber dann hätten die doch wieder den Bezug zu einer Klasse oder verstehe ich hier "Bezug" falsch .

Schau dir mal die Utilityklassen Objects oder Collections an, hier dient die Klasse lediglich als Container/Namespace für eine lose Ansammlung von Funktionen. Mit Objektorientierung hat solch eine Verwendung einer Klasse natürlich nichts zu tun. Es geht halt nicht anders in Java. Auch die main()-Funktion ist ja Teil einer Klasse obwohl das jetzt keinen tieferen Sinn ergibt.
 
Mir ist schon klar was du meinst nur ist halt das erste was mir einfällt bei Funktion ohne Bezug zu einer Klasse Interface :)
 
antred schrieb:
Redest du da nicht eher von dem Unterschied zwischen einer Prozedur und einer Funktion?

Möglich :mussweg:

Schon wieder so lange her die nackte Theorie damals :rolleyes: :D
Halt mich jetzt raus und les lieber mit, anstatt mit Halbwissen zu glänzen ;)
 
Zespire schrieb:
Mir ist schon klar was du meinst nur ist halt das erste was mir einfällt bei Funktion ohne Bezug zu einer Klasse Interface :)
Und mit der default Methode in einem Interface gibt es sogar das nun auch in Java.
 
Auch "Funktionen", die in Interfaces definiert sind (ob abstrakt oder nicht), werden in Java als Methoden bezeichnet. Wüsste auch nicht, warum man dies anders handhaben sollte. Der spätere Aufruf dieser Methoden wird immer an einen konkreten Typ gebunden sein und ist nicht "isoliert" möglich.
 
Zespire schrieb:
Mir ist schon klar was du meinst nur ist halt das erste was mir einfällt bei Funktion ohne Bezug zu einer Klasse Interface :)

Eigentlich ganz easy: eine Klasse definiert die ganzen Methoden, Attribute usw, wenn du die Klasse ansprechen willst musst du ein Objekt dieser Klasse erzeugen. Sprich du kannst dann 5 Milliarden Objekte der Klasse Auto haben, das hat das Attribut Größe und die Methode fahren. Funktionen einer Klasse heißen dann Methoden, die globalen Variablen innerhalb der Klasse sind die Attribute.

Hast du meherer Objekte unterschiedlicher Klassen, die miteinander reden sollen, kannst du ein Interface definieren. Da steht im Wesentlichen das drin was nötig ist, mit der Klasse Daten zu tauschen (also im einfachsten Fall eine Methode getData die einfach nur alles mögliche zurückwirft). Die Klasse des Objekts muss dann quasi die Funktionen des Interfaces implementieren. Sprich in deinem Interface gibts eine Methode getData, willst du dieses Interface mit deinem Objekt bedienen muss deine Klasse auch eine Funktion(oder wegen mir Methode) getData implementieren.

Das Interface macht also nichts anderes als zu sagen: da haste 5 Funktionen, die musste in deinem Objekt implementieren damit du mich erfüllst.

Der Vorteil davon ist, dass wenn das Interface anständig definiert ist du mit verschiedenen Klassen dieses Interface erfüllen kannst und die kannst du dann immer gleich ansprechen, was die Klassen dahinter genau machen interessiert dich dann nicht die Bohne. Im wesentlcihen ist das nur eine strikte Variante davon sich vorher zu einigen, dass bestimmte Objekte so und so miteinander kommunizieren sollen. Das könnte man vorher auch einfach so festlegen, übers Interface bist du halt sicher dass die Entwickler sich daran halten müssen.

AFAIR kann man in Java gar nicht prozedural programmieren (prozedural heißt du hast keine Klasse und kein Objekt, dein Programm läuft los wenn du es aufrufst, hat eine Hauptfunktion die halt aufgerufen wird und die ruft dann Unterfunktionen auf). C wäre zB prozedural, da hast du eine Mainfunktion, die rennt los wenn du den Code ausführst und verzweigt dann in die Unterfunktionen. Du kannst jetzt wenn du magst wild irgendwelche Helferfunktionen in eine Standardklasse klatschen, wenn mans genau nimmt ist das dann formal zwar noch objektorientiert (du musst ja ein Objekt der Klasse erzeugen), hat aber halt mit dem Konzept der Objektorientierung nicht viel zu tun.

Also:
Funktion in einer Klasse = Methode
Interface = Schnittstelle gegen die man programmiert um Kommunikation zwischen Objekten zu standardisieren
Klasse = Sammlung von Methoden und Attributen (oder globalen Variablen und Funktionen)
Objekt = spezifische Instanz eine Klasse
 
Um das ganze noch einmal auf zu klären es geht mir nicht darum was eine Funktion oder Methode ist.

Weiter oben wurde geschrieben das eine Funktion keinen Bezug zu einer Klasse hat.

Der einzige mir bekannte Weg eine Funktion/Methode zu definieren ohne Bezug zu einer Klasse ist mit/in einem Interface.

Weshalb ich daraufhin auch gefragt habe ob das nicht ein Interface ist.

Zusammengefasst Funktionen/Methoden haben immer Bezug zu einer Klasse solange man sie nicht in einem Interface
definiert und später in eine beliebige Klasse implementiert... Oder ?
 
Zespire schrieb:
Der einzige mir bekannte Weg eine Funktion/Methode zu definieren ohne Bezug zu einer Klasse ist mit/in einem Interface.

Weil du nur Java kennst. In C/C++ beispielsweise ist es überhaupt kein Problem eine Funktion ohne Klasse zu definieren.
 
Zespire schrieb:
Da habe ich wohl glatt übersehen das es hier nicht um java geht :rolleyes:

In Java gibt's aber halt keine Funktionen, sondern nur Methoden.
 
Zurück
Oben