Kann jemand eine einfache Erklärung von Methoden und Funktionen im OOP-Kontext geben?
if(class(object)) { ... } else {stop()}
konzeptionell der Methode?
Kann jemand eine einfache Erklärung von Methoden und Funktionen im OOP-Kontext geben?
if(class(object)) { ... } else {stop()}
konzeptionell der Methode?
Antworten:
Eine Funktion ist ein Code, der beim Namen aufgerufen wird. Es können Daten übergeben werden, mit denen gearbeitet werden soll (dh die Parameter), und es können optional Daten zurückgegeben werden (der Rückgabewert). Alle Daten, die an eine Funktion übergeben werden, werden explizit übergeben.
Eine Methode ist ein Code, der von einem Namen aufgerufen wird, der einem Objekt zugeordnet ist. In den meisten Punkten ist es bis auf zwei wesentliche Unterschiede mit einer Funktion identisch:
(Dies ist eine vereinfachte Erklärung, bei der Fragen des Umfangs usw. ignoriert werden .)
Eine Methode befindet sich auf einem Objekt.
Eine Funktion ist unabhängig von einem Objekt.
Für Java und C # gibt es nur Methoden.
Für C gibt es nur Funktionen.
Für C ++ und Python hängt es davon ab, ob Sie in einer Klasse sind oder nicht.
'Methode' ist das objektorientierte Wort für 'Funktion' . Das ist so ziemlich alles, was dazu gehört (dh kein wirklicher Unterschied).
Leider denke ich, dass viele der Antworten hier die Idee, dass es einen komplexen, bedeutungsvollen Unterschied gibt, aufrechterhalten oder vorantreiben.
Wirklich - es steckt nicht so viel dahinter, nur verschiedene Wörter für dasselbe.
[späte Hinzufügung]
Wie Brian Neal in einem Kommentar zu dieser Frage betonte , verwendet der C ++ - Standard niemals den Begriff "Methode", wenn er sich auf Mitgliedsfunktionen bezieht. Einige Leute nehmen das vielleicht als Hinweis darauf, dass C ++ nicht wirklich eine objektorientierte Sprache ist. Ich nehme es jedoch lieber als Hinweis darauf, dass eine ziemlich kluge Gruppe von Menschen nicht glaubte, dass es einen besonders starken Grund gibt, einen anderen Begriff zu verwenden.
self
Argument explizit. Und viele Sprachen haben statische Methoden, denen keine Instanz übergeben wird.
this
oder unterstützen self
, aber diese Konstrukte werden dann normalerweise eher als Funktionen als als Methoden bezeichnet.
Im Allgemeinen: Methoden sind Funktionen, die zu einer Klasse gehören. Funktionen können sich in einem anderen Bereich des Codes befinden, sodass Sie angeben können, dass alle Methoden Funktionen sind, aber nicht alle Funktionen Methoden:
Nehmen Sie das folgende Python-Beispiel:
class Door:
def open(self):
print 'hello stranger'
def knock_door:
a_door = Door()
Door.open(a_door)
knock_door()
Das angegebene Beispiel zeigt Ihnen eine Klasse namens "Door" mit einer Methode oder Aktion namens "open". Sie wird als Methode bezeichnet, da sie innerhalb einer Klasse deklariert wurde. Es gibt einen anderen Teil des Codes mit "def" direkt darunter, der eine Funktion definiert. Es handelt sich um eine Funktion, da sie nicht innerhalb einer Klasse deklariert ist. Diese Funktion ruft die Methode auf, die wir in unserer Klasse definiert haben, wie Sie sehen können, und schließlich ist die Funktion von selbst genannt.
Wie Sie sehen, können Sie eine Funktion überall aufrufen. Wenn Sie jedoch eine Methode aufrufen möchten, müssen Sie entweder ein neues Objekt des gleichen Typs wie die Klasse übergeben, für die die Methode deklariert ist (Class.method (Objekt)), oder Sie müssen aufrufen die Methode innerhalb des Objekts (object.Method ()), zumindest in Python.
Stellen Sie sich Methoden als Dinge vor, die nur eine Entität tun kann. Wenn Sie also eine Hundeklasse haben, ist es sinnvoll, eine Rindenfunktion nur innerhalb dieser Klasse zu haben, und das wäre eine Methode, wenn Sie auch eine Personenklasse haben, für die dies sinnvoll sein könnte Schreiben Sie eine Funktion "Feed", die keiner Klasse angehört, da sowohl Menschen als auch Hunde gefüttert werden können, und Sie könnten dies eine Funktion nennen, da sie keiner bestimmten Klasse angehört.
Einfache Art, sich zu erinnern:
Wenn Sie hier lesen möchten, lesen Sie "Meine Einführung in die OO-Methoden".
Die Idee hinter dem objektorientierten Paradigma ist, die Software zu "bedrohen", aus der sich "Objekte" zusammensetzen. Objekte in der realen Welt haben Eigenschaften, z. B. wenn Sie einen Mitarbeiter haben, der Mitarbeiter einen Namen, eine Mitarbeiter-ID, eine Position hat, einer Abteilung angehört usw. usw.
Das Objekt weiß auch, wie es mit seinen Attributen umgeht und einige Operationen an ihnen ausführt. Nehmen wir an, wir möchten ihn fragen, wenn wir wissen möchten, was ein Mitarbeiter gerade tut.
employe whatAreYouDoing.
Das "whatAreYouDoing" ist eine "Nachricht", die an das Objekt gesendet wird. Das Objekt weiß, wie man diese Fragen beantwortet. Es wird gesagt, dass es eine "Methode" hat, um die Frage zu lösen.
Die Art und Weise, wie Objekte ihr Verhalten offenlegen müssen, wird als Methode bezeichnet. Methoden sind also das Artefaktobjekt, das etwas "tun" muss.
Andere mögliche Methoden sind
employee whatIsYourName
employee whatIsYourDepartmentsName
usw.
Funktionen hingegen sind Möglichkeiten, wie eine Programmiersprache einige Daten berechnen muss. Beispielsweise haben Sie möglicherweise die Funktion addValues (8, 8), die 16 zurückgibt
// pseudo-code
function addValues( int x, int y ) return x + y
// call it
result = addValues( 8,8 )
print result // output is 16...
Da die ersten populären Programmiersprachen (wie fortran, c, pascal) das OO-Paradigma nicht abdeckten, nennen sie diese Artefakte nur "Funktionen".
Zum Beispiel wäre die vorherige Funktion in C:
int addValues( int x, int y )
{
return x + y;
}
Es ist nicht "natürlich" zu sagen, dass ein Objekt eine "Funktion" hat, um eine Aktion auszuführen, da Funktionen eher mit mathematischen Dingen zusammenhängen, während ein Mitarbeiter wenig Mathematik hat, aber Sie können Methoden haben, die genau das Gleiche tun wie Funktionen. In Java wäre dies beispielsweise die entsprechende Funktion addValues.
public static int addValues( int x, int y ) {
return x + y;
}
Kommt mir bekannt vor? Das liegt daran, dass Java seine Wurzeln in C ++ und C ++ in C hat.
Am Ende ist nur ein Konzept, in der Implementierung sehen sie vielleicht gleich aus, aber in der OO-Dokumentation werden diese als Methode bezeichnet.
Hier ist ein Beispiel für das vorherige Employee-Objekt in Java.
public class Employee {
Department department;
String name;
public String whatsYourName(){
return this.name;
}
public String whatsYourDeparmentsName(){
return this.department.name();
}
public String whatAreYouDoing(){
return "nothing";
}
// Ignore the following, only set here for completness
public Employee( String name ) {
this.name = name;
}
}
// Usage sample.
Employee employee = new Employee( "John" ); // Creates an employee called John
// If I want to display what is this employee doing I could use its methods.
// to know it.
String name = employee.whatIsYourName():
String doingWhat = employee.whatAreYouDoint();
// Print the info to the console.
System.out.printf("Employee %s is doing: %s", name, doingWhat );
Output:
Employee John is doing nothing.
Der Unterschied liegt dann in der "Domäne", in der es angewendet wird.
AppleScript hat die Idee von "natürlicher Sprache", die OO irgendwann hatte. Zum Beispiel Smalltalk. Ich hoffe, es ist für Sie vernünftig einfacher, Methoden in Objekten zu verstehen, nachdem Sie dies gelesen haben.
HINWEIS: Der Code darf nicht kompiliert werden, sondern dient nur als Beispiel. Sie können den Beitrag jederzeit ändern und ein Python-Beispiel hinzufügen.
In der OO-Welt werden die beiden üblicherweise verwendet, um dasselbe zu bedeuten.
Aus einer reinen Math- und CS-Perspektive gibt eine Funktion immer das gleiche Ergebnis zurück, wenn sie mit denselben Argumenten aufgerufen wird (f (x, y) = (x + y)). Eine Methode hingegen ist normalerweise einer Instanz einer Klasse zugeordnet. Wiederum verwenden die meisten modernen OO-Sprachen den Begriff "Funktion" größtenteils nicht mehr. Viele statische Methoden können Funktionen sehr ähnlich sein, da sie normalerweise keinen Status haben (nicht immer wahr).
Angenommen, eine Funktion ist ein Codeblock (normalerweise mit einem eigenen Bereich und manchmal mit einem eigenen Abschluss), der möglicherweise einige Argumente erhält und auch ein Ergebnis zurückgibt.
Eine Methode ist eine Funktion, die einem Objekt gehört (in einigen objektorientierten Systemen ist es korrekter zu sagen, dass sie einer Klasse gehört). Wenn Sie einem Objekt / einer Klasse "gehören", bedeutet dies, dass Sie über das Objekt / die Klasse auf die Methode verweisen. Wenn Sie beispielsweise in Java eine Methode "open ()" aufrufen möchten, die einem Objekt "door" gehört, müssen Sie "door.open ()" schreiben.
Normalerweise erhalten Methoden auch einige zusätzliche Attribute, die ihr Verhalten innerhalb des Objekts / der Klasse beschreiben, z. B. Sichtbarkeit (bezogen auf das objektorientierte Konzept der Kapselung), die definiert, von welchen Objekten (oder Klassen) die Methode aufgerufen werden kann.
In vielen objektorientierten Sprachen gehören alle "Funktionen" zu einem Objekt (oder einer Klasse), und daher gibt es in diesen Sprachen keine Funktionen, die keine Methoden sind.
Methoden sind Funktionen von Klassen. Im normalen Jargon tauschen Menschen überall Methoden und Funktionen aus. Grundsätzlich können Sie sie als dasselbe betrachten (nicht sicher, ob globale Funktionen als Methoden bezeichnet werden).
Eine Funktion ist ein mathematisches Konzept. Zum Beispiel:
f(x,y) = sin(x) + cos(y)
sagt, dass die Funktion f () die sin des ersten Parameters zurückgibt, der zum Cosinus des zweiten Parameters hinzugefügt wird. Es ist nur Mathe. Dabei sind sin () und cos () ebenfalls Funktionen. Eine Funktion hat eine andere Eigenschaft: Alle Aufrufe einer Funktion mit denselben Parametern sollten dasselbe Ergebnis zurückgeben.
Eine Methode hingegen ist eine Funktion, die sich auf ein Objekt in einer objektorientierten Sprache bezieht. Es hat einen impliziten Parameter: das Objekt, auf das reagiert wird (und seinen Zustand).
Wenn Sie also ein Objekt Z mit einer Methode g (x) haben, sehen Sie möglicherweise Folgendes:
Z.g(x) = sin(x) + cos(Z.y)
In diesem Fall wird der Parameter x wie im vorherigen Funktionsbeispiel übergeben. Der Parameter für cos () ist jedoch ein Wert, der innerhalb des Objekts Z lebt. Z und die darin lebenden Daten (Zy) sind implizite Parameter für die g () -Methode von Z.
Funktion oder Methode ist ein benannter aufrufbarer Code, der einige Operationen ausführt und optional einen Wert zurückgibt.
In der Sprache C wird der Begriff Funktion verwendet. Java & C # Leute würden sagen, es ist eine Methode (und eine Funktion ist in diesem Fall innerhalb einer Klasse / eines Objekts definiert).
Ein C ++ - Programmierer kann es eine Funktion oder manchmal eine Methode nennen (abhängig davon, ob er C ++ - Code im prozeduralen Stil schreibt oder eine objektorientierte Art von C ++ ausführt, würde auch ein C / C ++ - Programmierer es wahrscheinlich eine Funktion nennen, weil der Begriff 'Methode' lautet seltener in der C / C ++ - Literatur verwendet).
Sie verwenden eine Funktion, indem Sie einfach ihren Namen wie folgt aufrufen:
result = mySum(num1, num2);
Sie würden eine Methode aufrufen, indem Sie zuerst auf ihr Objekt verweisen, wie z.
result = MyCalc.mySum(num1,num2);
Historisch gesehen mag es einen subtilen Unterschied gegeben haben, dass eine "Methode" etwas ist, das keinen Wert zurückgibt, und eine "Funktion", die dies tut. Jede Sprache hat ein eigenes Lexikon von Begriffen mit besonderer Bedeutung.
In „C“ , das Wort „Funktion“ bedeutet eine Programmroutine .
In Java hat der Begriff "Funktion" keine besondere Bedeutung. Während "Methode" eine der Routinen bedeutet, die die Implementierung einer Klasse bilden.
In C # würde das bedeuten:
public void DoSomething() {} // method
public int DoSomethingAndReturnMeANumber(){} // function
Aber wirklich, ich wiederhole noch einmal, dass es wirklich keinen Unterschied zwischen den beiden Konzepten gibt. Wenn Sie den Begriff "Funktion" in informellen Diskussionen über Java verwenden, gehen die Leute davon aus, dass Sie "Methode" gemeint haben, und fahren fort. Verwenden Sie es nicht in geeigneten Dokumenten oder Präsentationen über Java, sonst sehen Sie albern aus.
method
... oder ich würde es nennen procedure
und function
.
Funktion ist eine Reihe von Logik, mit der Daten bearbeitet werden können.
Während Methode eine Funktion ist, mit der die Daten des Objekts bearbeitet werden, zu dem sie gehören. Wenn Sie also eine Funktion haben, die nicht vollständig mit Ihrer Klasse zusammenhängt, aber in der Klasse deklariert wurde, ist dies keine Methode. Es heißt schlechtes Design.
Methoden für eine Klasse wirken auf die Instanz der Klasse, die als Objekt bezeichnet wird.
class Example
{
public int data = 0; // Each instance of Example holds its internal data. This is a "field", or "member variable".
public void UpdateData() // .. and manipulates it (This is a method by the way)
{
data = data + 1;
}
public void PrintData() // This is also a method
{
Console.WriteLine(data);
}
}
class Program
{
public static void Main()
{
Example exampleObject1 = new Example();
Example exampleObject2 = new Example();
exampleObject1.UpdateData();
exampleObject1.UpdateData();
exampleObject2.UpdateData();
exampleObject1.PrintData(); // Prints "2"
exampleObject2.PrintData(); // Prints "1"
}
}
In OO-Sprachen wie Object Pascal oder C ++ ist eine "Methode" eine Funktion, die einem Objekt zugeordnet ist. So könnte beispielsweise ein "Hund" -Objekt eine "Rinden" -Funktion haben, und dies würde als "Methode" betrachtet. Im Gegensatz dazu steht die Funktion "StrLen" für sich allein (sie gibt die Länge eines als Argument angegebenen Strings an). Es ist also nur eine "Funktion". Javascript ist auch technisch objektorientiert, weist jedoch im Vergleich zu einer vollständigen Sprache wie C ++, C # oder Pascal viele Einschränkungen auf. Trotzdem sollte die Unterscheidung bestehen bleiben.
Einige zusätzliche Fakten: C # ist vollständig objektorientiert, sodass Sie keine eigenständigen "Funktionen" erstellen können. In C # ist jede Funktion an ein Objekt gebunden und somit technisch eine "Methode". Der Kicker ist, dass nur wenige Leute in C # sie als "Methoden" bezeichnen - sie verwenden nur den Begriff "Funktionen", weil es keinen wirklichen Unterschied gibt.
Schließlich - nur damit hier keine Pascal-Gurus auf mich springen - unterscheidet Pascal auch zwischen "Funktionen" (die einen Wert zurückgeben) und "Prozeduren", die dies nicht tun. C # macht diese Unterscheidung nicht explizit, obwohl Sie natürlich wählen können, ob Sie einen Wert zurückgeben möchten oder nicht.
Da Sie Python erwähnt haben, kann das Folgende die Beziehung zwischen Methoden und Objekten in den meisten modernen objektorientierten Sprachen veranschaulichen. Kurz gesagt, was sie als "Methode" bezeichnen, ist nur eine Funktion, der ein zusätzliches Argument übergeben wird (wie andere Antworten gezeigt haben), aber Python macht dies expliziter als die meisten Sprachen.
# perfectly normal function
def hello(greetee):
print "Hello", greetee
# generalise a bit (still a function though)
def greet(greeting, greetee):
print greeting, greetee
# hide the greeting behind a layer of abstraction (still a function!)
def greet_with_greeter(greeter, greetee):
print greeter.greeting, greetee
# very simple class we can pass to greet_with_greeter
class Greeter(object):
def __init__(self, greeting):
self.greeting = greeting
# while we're at it, here's a method that uses self.greeting...
def greet(self, greetee):
print self.greeting, greetee
# save an object of class Greeter for later
hello_greeter = Greeter("Hello")
# now all of the following print the same message
hello("World")
greet("Hello", "World")
greet_with_greeter(hello_greeter, "World")
hello_greeter.greet("World")
Vergleichen Sie nun die Funktion greet_with_greeter
und die Methode greet
: Der einzige Unterschied ist der Name des ersten Parameters (in der Funktion habe ich ihn "greeter" genannt, in der Methode habe ich ihn "self" genannt). Ich kann die greet
Methode also genauso verwenden wie die greet_with_greeter
Funktion (mit der "Punkt" -Syntax, um darauf zuzugreifen, da ich sie in einer Klasse definiert habe):
Greeter.greet(hello_greeter, "World")
Also habe ich eine Methode effektiv in eine Funktion verwandelt. Kann ich eine Funktion in eine Methode verwandeln? Nun, da Sie mit Python nach der Definition mit Klassen herumspielen können, versuchen wir Folgendes:
Greeter.greet2 = greet_with_greeter
hello_greeter.greet2("World")
Ja, die Funktion greet_with_greeter
wird jetzt auch als Methode bezeichnet greet2
. Dies zeigt den einzigen wirklichen Unterschied zwischen einer Methode und einer Funktion: Wenn Sie eine Methode durch Aufrufen eines Objekts "aufrufen" object.method(args)
, verwandelt die Sprache es auf magische Weise in method(object, args)
.
(OO-Puristen könnten argumentieren, dass eine Methode etwas anderes ist als eine Funktion, und wenn Sie sich mit fortgeschrittenem Python oder Ruby - oder Smalltalk! - beschäftigen, werden Sie ihren Sinn erkennen. Auch einige Sprachen gewähren Methoden besonderen Zugriff auf Teile eines Objekts Der hauptsächliche konzeptionelle Unterschied ist immer noch der versteckte zusätzliche Parameter.)
Für mich: Die Funktion einer Methode und einer Funktion ist dieselbe, wenn ich damit einverstanden bin:
Wie bei jedem Code haben Sie möglicherweise Objekte, die Sie eingeben, und möglicherweise ein Objekt, das als Ergebnis entsteht. Währenddessen könnten sie den Zustand eines Objekts ändern, aber das würde ihre Grundfunktion für mich nicht ändern.
Möglicherweise unterscheidet sich die Definition beim Aufrufen von Funktionen von Objekten oder anderen Codes. Aber ist das nicht etwas für verbale Unterscheidungen und deshalb tauschen die Leute sie aus? Das erwähnte Berechnungsbeispiel, mit dem ich vorsichtig sein würde. weil ich Angestellte anheuere, um meine Berechnungen durchzuführen:
new Employer().calculateSum( 8, 8 );
Auf diese Weise kann ich mich darauf verlassen, dass ein Arbeitgeber für die Berechnungen verantwortlich ist. Wenn er mehr Geld will, befreie ich ihn und überlasse es dem Müllsammler, nicht genutzte Mitarbeiter zu entsorgen, den Rest zu erledigen und einen neuen Mitarbeiter zu finden.
Selbst wenn ich behaupte, dass eine Methode eine Objektfunktion und eine Funktion eine nicht verbundene Berechnung ist, hilft mir das nicht weiter. Der Funktionsdeskriptor selbst und im Idealfall die Dokumentation der Funktion sagen mir, was sie benötigt und was sie möglicherweise zurückgibt. Der Rest, wie das Manipulieren des Zustands eines Objekts, ist für mich nicht wirklich transparent. Ich erwarte, dass sowohl Funktionen als auch Methoden das liefern und manipulieren, was sie behaupten, ohne im Detail wissen zu müssen, wie sie es tun. Sogar eine reine Rechenfunktion kann den Status der Konsole ändern oder an eine Protokolldatei anhängen.
Lassen Sie uns nicht zu kompliziert machen, was eine sehr einfache Antwort sein sollte. Methoden und Funktionen sind dasselbe. Sie nennen eine Funktion eine Funktion, wenn sie sich außerhalb einer Klasse befindet, und Sie nennen eine Funktion eine Methode, wenn sie innerhalb einer Klasse geschrieben ist.
Nach meinem Verständnis ist eine Methode jede Operation, die für eine Klasse ausgeführt werden kann. Es ist ein allgemeiner Begriff, der in der Programmierung verwendet wird.
In vielen Sprachen werden Methoden durch Funktionen und Unterprogramme dargestellt. Der Hauptunterschied, den die meisten Sprachen für diese verwenden, besteht darin, dass Funktionen möglicherweise einen Wert an den Aufrufer zurückgeben und eine Unterroutine möglicherweise nicht. Viele moderne Sprachen haben jedoch nur Funktionen, diese können jedoch optional keinen Wert zurückgeben.
Nehmen wir zum Beispiel an, Sie möchten eine Katze beschreiben und möchten, dass sie gähnen kann. Sie würden eine Cat-Klasse mit einer Yawn-Methode erstellen, die höchstwahrscheinlich eine Funktion ohne Rückgabewert ist.
In Annäherung erster Ordnung ist eine Methode (im C ++ - Stil OO) ein anderes Wort für eine Mitgliedsfunktion, dh eine Funktion, die Teil einer Klasse ist.
In Sprachen wie C / C ++ können Sie Funktionen haben, die nicht Mitglieder einer Klasse sind. Sie nennen eine Funktion, die keiner Klasse zugeordnet ist, keine Methode.
Funktion ist das Konzept, das hauptsächlich zur prozedurorientierten Programmierung gehört, bei der eine Funktion eine Entität ist, die Daten verarbeiten und Ihnen Wert zurückgeben kann
Methode ist das Konzept der objektorientierten Programmierung, bei der eine Methode Mitglied einer Klasse ist, die hauptsächlich die Verarbeitung für die Klassenmitglieder durchführt.
IMHO-Leute wollten nur ein neues Wort erfinden, um die Kommunikation zwischen Programmierern zu vereinfachen, wenn sie sich auf Funktionen innerhalb von Objekten beziehen wollten.
Wenn Sie Methoden sagen, meinen Sie Funktionen innerhalb der Klasse. Wenn Sie Funktionen sagen, meinen Sie einfach Funktionen außerhalb der Klasse.
Die Wahrheit ist, dass beide Wörter verwendet werden, um Funktionen zu beschreiben. Selbst wenn Sie es falsch verwendet haben, passiert nichts Falsches. Beide Wörter beschreiben gut, was Sie in Ihrem Code erreichen möchten.
Funktion ist ein Code, der eine Rolle ( eine Funktion ) spielen muss, um etwas zu tun. Methode ist eine Methode zur Lösung des Problems.
Es macht das Gleiche. Es ist das selbe Ding. Wenn Sie sehr präzise sein und der Konvention folgen möchten, können Sie Methoden als Funktionen in Objekten aufrufen.
Ich bin kein Experte, aber das weiß ich:
Funktion ist ein Begriff in der Sprache C, er bezieht sich auf einen Code und der Funktionsname ist die Kennung für die Verwendung dieser Funktion.
Methode ist der OO-Term, normalerweise hat er diesen Zeiger im Funktionsparameter. Sie können diesen Code nicht wie C aufrufen, Sie müssen ein Objekt verwenden, um ihn aufzurufen.
Die Aufrufmethoden sind ebenfalls unterschiedlich. Rufen Sie hier die Bedeutung auf, um die Adresse dieses Codes zu finden. In C / C ++ verwendet die Verknüpfungszeit das Funktionssymbol zum Suchen.
Ziel-C ist anders. Rufen Sie eine C-Funktion auf, um mithilfe der Datenstruktur die Adresse zu finden. Dies bedeutet, dass zur Laufzeit alles bekannt ist.
Ich weiß, dass viele andere bereits geantwortet haben, aber ich fand, dass das Folgende eine einfache, aber effektive einzeilige Antwort ist. Es sieht zwar nicht viel besser aus als andere Antworten hier, aber wenn Sie es sorgfältig lesen, enthält es alles, was Sie über die Methode und die Funktion wissen müssen.
Eine Methode ist eine Funktion mit einem definierten Empfänger. In OOP-Begriffen ist eine Methode eine Funktion für eine Instanz eines Objekts.
Vom Lesen dieses Dokuments auf Microsoft
Mitglieder, die ausführbaren Code enthalten, werden zusammen als Funktionsmitglieder einer Klasse bezeichnet. Im vorhergehenden Abschnitt werden Methoden beschrieben, bei denen es sich hauptsächlich um Funktionselemente handelt. In diesem Abschnitt werden die anderen Arten von Funktionselementen beschrieben, die von C # unterstützt werden: Konstruktoren, Eigenschaften, Indexer, Ereignisse, Operatoren und Finalisierer.
Methoden sind also die Teilmenge der Funktionen. Jede Methode ist eine Funktion, aber nicht jede Funktion ist eine Methode. Zum Beispiel constructor
kann a nicht als Methode bezeichnet werden, aber es ist eine Funktion.
Funktion - Eine Funktion in einem unabhängigen Codeteil, die eine Logik enthält und unabhängig aufgerufen werden muss und außerhalb der Klasse definiert ist.
Methode - Eine Methode ist ein unabhängiger Code, der in Bezug auf ein Objekt aufgerufen wird und innerhalb der Klasse definiert wird.
Hier einige Erklärungen für Methode und Funktion anhand von JavaScript-Beispielen:
test(20, 50);
Diese Funktion definiert und verwendet, um einige Schritte auszuführen oder etwas zurückzugeben, das irgendwo gespeichert / verwendet werden kann.
Sie können Code wiederverwenden: Definieren Sie den Code einmal und verwenden Sie ihn mehrmals.
Sie können denselben Code mehrmals mit unterschiedlichen Argumenten verwenden, um unterschiedliche Ergebnisse zu erzielen.
var x = myFunction(4, 3); // Function is called, return value will end up in x
function myFunction(a, b) {
return a * b; // Function returns the product of a and b
}
var test = something.test();
Hier kann test () eine Methode eines Objekts sein oder einen Prototyp für eingebaute Objekte benutzerdefiniert definieren. Hier finden Sie weitere Erklärungen:
JavaScript-Methoden sind die Aktionen, die für Objekte ausgeführt werden können.
Eine JavaScript-Methode ist eine Eigenschaft, die eine Funktionsdefinition enthält.
Integrierte Eigenschaft / Methode für Zeichenfolgen in Javascript:
var message = "Hello world!";
var x = message.toUpperCase();
//Output: HELLO WORLD!
Benutzerdefiniertes Beispiel:
function person(firstName, lastName, age, eyeColor) {
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
this.eyeColor = eyeColor;
this.changeName = function (name) {
this.lastName = name;
};
}
something.changeName("SomeName"); //This will change 'something' objject's name to 'SomeName'
Sie können beispielsweise auch Eigenschaften für String, Array usw. definieren
String.prototype.distance = function (char) {
var index = this.indexOf(char);
if (index === -1) {
console.log(char + " does not appear in " + this);
} else {
console.log(char + " is " + (this.length - index) + " characters from the end of the string!");
}
};
var something = "ThisIsSomeString"
// now use distance like this, run and check console log
something.distance("m");
Einige Referenzen: Javascript-Objektmethode , Funktionen , Weitere Informationen zum Prototyp
TL; DR
Eine Funktion ist ein auszuführender Code.
Eine Methode ist eine Funktion innerhalb eines Objekts.
Beispiel einer Funktion:
function sum(){
console.log("sum")l
}
Beispiel einer Methode:
const obj = {
a:1,
b:2,
sum(){
}
}
Deshalb sagen wir, dass ein "this" -Schlüsselwort in einer Funktion nur dann sehr nützlich ist, wenn wir es mit call, apply oder bind verwenden. Call, apply, bind ruft diese Funktion als Methode innerhalb von object ==> im Grunde genommen auf konvertiert Funktion in Methode
Sie sind oft austauschbar, aber eine Methode bezieht sich normalerweise auf eine Unterroutine innerhalb einer Klasse, und eine Funktion bezieht sich normalerweise auf eine Unterroutine außerhalb der Klasse. Zum Beispiel in Ruby:
# function
def putSqr(a)
puts a ** 2
end
class Math2
# method
def putSqr(a)
puts a ** 2
end
end
In Java, wo sich alles (außer Paket- und Importanweisungen) innerhalb der Klasse befinden muss, werden sie fast immer als "Methoden" bezeichnet.