it-swarm.com.de

Was ist der Unterschied zwischen einer Methode und einer Funktion?

Kann jemand eine einfache Erklärung von Methoden vs. Funktionen im OOP - Kontext geben?

1546
willc2

Eine function ist ein Code, der nach Name aufgerufen wird. Es können Daten zur Bearbeitung übergeben werden (d. H. Die Parameter) und optional können Daten (der Rückgabewert) zurückgegeben werden. Alle Daten, die an eine Funktion übergeben werden, werden explizit übergeben.

Eine method ist ein Code, der mit einem Namen aufgerufen wird, der einem Objekt zugeordnet ist. In den meisten Punkten ist es mit einer Funktion identisch, abgesehen von zwei Hauptunterschieden:

  1. Eine Methode wird implizit an das Objekt übergeben, für das sie aufgerufen wurde.
  2. Eine Methode kann mit Daten arbeiten, die in der Klasse enthalten sind (in Erinnerung, dass ein Objekt eine Instanz einer Klasse ist - die Klasse ist die Definition, das Objekt ist eine Instanz dieser Daten).

(Dies ist eine vereinfachte Erklärung, die Probleme mit scope etc. ignoriert.)

1619

Eine Methode befindet sich auf einem Objekt.
Eine Funktion ist unabhängig von einem Objekt. 

Für Java gibt es nur Methoden.
Für C gibt es nur Funktionen.

Für C++ hängt es davon ab, ob Sie in einer Klasse sind oder nicht.

899
Aaron

'method' ist das objektorientierte Word für 'function'. Das ist so ziemlich alles, was es gibt (dh keinen wirklichen Unterschied).

Leider denke ich, dass viele der Antworten hier die Vorstellung, dass es einen komplexen, bedeutungsvollen Unterschied gibt, fortsetzen oder vorantreiben.

Wirklich - da ist nicht so viel dran, nur verschiedene Wörter für dasselbe.

[Spätzugabe]


Wie Brian Neal in einem Kommentar zu dieser Frage betont hat, verwendet der C++ - Standard in der Tat niemals den Begriff "Methode", wenn er sich auf Elementfunktionen bezieht. Einige Leute mögen dies als Hinweis darauf betrachten, dass C++ nicht wirklich eine objektorientierte Sprache ist. Ich ziehe es jedoch vor, es als Hinweis darauf zu betrachten, dass eine ziemlich kluge Gruppe nicht der Meinung war, dass es einen besonders wichtigen Grund dafür gab, einen anderen Begriff zu verwenden.

190
Michael Burr

Im Allgemeinen: Methoden sind Funktionen, die zu einer Klasse gehören. Funktionen können sich auf jeden anderen Gültigkeitsbereich des Codes beziehen. Sie können also angeben, 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 Beispiel zeigt eine Klasse namens "Door", die eine Methode oder Aktion namens "open" hat. Diese Methode wird als Methode bezeichnet, da sie innerhalb einer Klasse deklariert wurde. Es gibt einen weiteren Teil des Codes mit "def" direkt darunter, der eine Funktion definiert. Dies ist eine Funktion, da sie nicht innerhalb einer Klasse deklariert ist. Diese Funktion ruft die von uns definierte Methode in unserer Klasse auf, wie Sie sehen können, und schließlich ist die Funktion von selbst aufgerufen.

Wie Sie sehen, können Sie eine Funktion überall aufrufen, aber wenn Sie eine Methode aufrufen möchten, müssen Sie entweder ein neues Objekt desselben Typs übergeben, in dem die Klasse deklariert ist (Class.method (object)), 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 Dog-Klasse haben, wäre es sinnvoll, nur innerhalb dieser Klasse eine Bark-Funktion zu haben, und dies wäre eine Methode. Wenn Sie auch eine Person-Klasse haben, kann dies sinnvoll sein Schreiben Sie eine Funktion "feed", für die keine Klasse gehört, da sowohl Menschen als auch Hunde gefüttert werden können, und Sie könnten eine Funktion nennen, da sie keiner Klasse angehört.

88
Gustavo Rubio

Eine sehr allgemeine Definition des Hauptunterschieds zwischen einer Funktion und einer Methode :

Funktionen werden außerhalb von Klassen definiert, während Methods innerhalb von Klassen definiert werden.

39
Elenasys

Einfache Möglichkeit, sich zu erinnern:

  • Function →Free (Frei bedeutet nicht zu einem Objekt oder einer Klasse)
  • Method → ​​Member (Ein Member eines Objekts oder einer Klasse)
37
Duc Filan

Wenn Sie Lust haben zu lesen, ist "Meine Einführung in OO Methoden".

Die Idee hinter dem objektorientierten Paradigma ist die "Bedrohung" der Software aus ... Objekten. Objekte in der realen Welt haben Eigenschaften, zum Beispiel wenn Sie einen Angestellten haben, der Angestellte einen Namen, eine Mitarbeiter-ID, eine Position hat, er einer Abteilung angehört usw. usw. 

Das Objekt weiß auch, wie es mit seinen Attributen umgeht und einige Operationen an ihnen ausführt. Sagen wir, wenn wir wissen wollen, was ein Mitarbeiter gerade macht, fragen wir ihn.

employe whatAreYouDoing.

Das "whatAreYouDoing" ist eine an das Objekt gesendete "Nachricht". Das Objekt weiß, wie es auf diese Fragen zu antworten ist, es heißt, es habe eine "Methode", um die Frage zu lösen.

Die Art und Weise, wie Objekte ihr Verhalten offenlegen müssen, wird als Methoden bezeichnet. Methoden also das Artefaktobjekt muss etwas "tun". 

Andere mögliche Methoden sind 

employee whatIsYourName
employee whatIsYourDepartmentsName

usw.

Funktionen auf der anderen Seite sind Methoden, mit denen eine Programmiersprache Daten berechnen kann. Beispielsweise können Sie die Funktion addValues ​​(8, 8) verwenden, 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 Angestellter wenig Mathematik hat, aber es gibt Methoden, die genau dieselben Funktionen haben 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 es nur ein Konzept, in der Implementierung sehen sie möglicherweise gleich aus, aber in der Dokumentation OO heißen diese Methoden.

Hier ist ein Beispiel des vorherigen Employee-Objekts 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 er angewendet wird.

AppleScript hat die Idee einer "natürlichen Sprache" Matphor, die irgendwann OO hatte. Zum Beispiel Smalltalk. Ich hoffe, es ist möglicherweise einfacher für Sie, die Methoden in Objekten zu verstehen, nachdem Sie dies gelesen haben.

HINWEIS: Der Code soll nicht kompiliert werden, nur um als Beispiel zu dienen. Fühlen Sie sich frei, den Beitrag zu ändern und ein Python-Beispiel hinzuzufügen.

27
OscarRyz

In der OO Welt werden die beiden üblicherweise verwendet, um dasselbe zu bedeuten. 

Aus einer reinen Math- und CS-Perspektive gibt eine Funktion immer dasselbe 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. Allerdings verwenden die meisten modernen OO -Sprachen den Begriff "Funktion" größtenteils nicht mehr. Viele statische Methoden können sehr ähnlich sein wie Funktionen, da sie normalerweise keinen Status haben (nicht immer wahr).

17
TheSoftwareJedi

Angenommen, eine Funktion ist ein Codeblock (normalerweise mit einem eigenen Bereich und manchmal mit einem eigenen Abschluss), der möglicherweise einige Argumente enthält und möglicherweise auch ein Ergebnis zurückgibt.

Eine Methode ist eine Funktion, die einem Objekt gehört (in einigen objektorientierten Systemen ist es richtiger zu sagen, dass sie einer Klasse gehört). Der Besitz eines Objekts/einer Klasse bedeutet, dass Sie sich über das Objekt/die Klasse auf die Methode beziehen. Wenn Sie beispielsweise in Java eine Methode "open ()" aufrufen möchten, die dem 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, zum Beispiel: Sichtbarkeit (bezogen auf das objektorientierte Konzept der Einkapselung), 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). In diesen Sprachen gibt es keine Funktionen, die keine Methoden sind.

15

Funktion oder Methode ist ein benannter aufrufbarer Code, der einige Operationen ausführt und optional einen Wert zurückgibt. 

In der Sprache C wird die Termfunktion verwendet. Java & C # Leute würden es als Methode bezeichnen (und in diesem Fall ist eine Funktion innerhalb einer Klasse/eines Objekts definiert).

Ein C++ - Programmierer kann es eine Funktion oder manchmal eine Methode nennen (abhängig davon, ob er prozeduralen C++ - Code schreibt oder objektorientiert arbeitet, würde es auch ein C/C++ - Programmierer wahrscheinlich eine Funktion nennen, weil er Begriff ist 'method' wird in der C/C++ - Literatur seltener verwendet.

Sie verwenden eine Funktion, indem Sie einfach ihren Namen aufrufen:

result = mySum(num1, num2);


Sie würden eine Methode aufrufen, indem Sie zuerst auf ihr Objekt verweisen, z.

result = MyCalc.mySum(num1,num2);
12

Eine Funktion ist ein mathematisches Konzept. Zum Beispiel:

f(x,y) = sin(x) + cos(y)

sagt, dass function f() den Sinus des ersten Parameters zum Kosinus des zweiten Parameters addiert. Es ist nur Mathe. Wie es ist, sind auch sin () und cos () 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 sein Zustand).

Wenn Sie also ein Objekt Z mit der Methode g (x) haben, sehen Sie möglicherweise Folgendes:

Z.g(x) = sin(x) + cos(Z.y)

In diesem Fall wird der Parameter x genauso übergeben wie im vorherigen Funktionsbeispiel. Der Parameter für cos () ist jedoch ein Wert, der innerhalb des Objekts Z lebt. Z und die darin enthaltenen Daten (Z.y) sind implizite Parameter für die Methode Z g().

12
Bradley Mazurek

In der Vergangenheit gab es möglicherweise einen subtilen Unterschied, wenn eine "Methode" etwas ist, die keinen Wert zurückgibt, und eine "Funktion", die dies tut. Jede Sprache hat ihre eigene Lexikon der Begriffe mit besonderer Bedeutung. 

In "C" bedeutet das Wort "Funktion"eine Programmroutine.

In Java hat der Begriff "Funktion" keine besondere Bedeutung. Während "Methode" eine der Routinen ist, die die Implementierung einer Klasse bilden.

In C # würde das wie folgt übersetzt werden:

public void DoSomething() {} // method
public int DoSomethingAndReturnMeANumber(){} // function

Aber ich wiederhole noch einmal, dass es wirklich keinen Unterschied zwischen den beiden Konzepten gibt. Wenn Sie in informellen Diskussionen über Java den Begriff "Funktion" verwenden, nehmen die Leute an, Sie meinten "Methode" und machen weiter. Verwenden Sie es nicht in richtigen Dokumenten oder Präsentationen über Java, sonst werden Sie dumm aussehen.

12
Jaimin Patel

Methoden sind Funktionen von Klassen. Im normalen Jargon tauschen die Menschen Methode und Funktion aus. Grundsätzlich können Sie sie als dasselbe betrachten (nicht sicher, ob globale Funktionen als Methoden bezeichnet werden).

http://en.wikipedia.org/wiki/Method_(computer_science)

11
Statement

Methoden einer Klasse wirken auf die Instanz der Klasse, das Objekt genannt. 

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"
   }
}
8
Statement

In OO -Sprachen wie Object Pascal oder C++ ist eine "Methode" eine mit einem Objekt verknüpfte Funktion. So könnte beispielsweise ein "Dog" -Objekt eine "Bellen" -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 Strings als Argument an). Es ist also nur eine "Funktion". Javascript ist auch technisch objektorientiert, weist jedoch viele Einschränkungen auf, verglichen mit einer ausgewachsenen Sprache wie C++, C # oder Pascal. Trotzdem sollte die Unterscheidung noch gelten.

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 gesehen eine "Methode". Der Kick ist, dass nur wenige Leute in C # sie als "Methoden" bezeichnen - sie verwenden einfach den Begriff "Funktionen", da es keine wirkliche Unterscheidung gibt.

Schließlich - nur damit mich keine Pascal-Gurus ansprechen - Pascal unterscheidet auch zwischen "Funktionen" (die einen Wert zurückgeben) und "Prozeduren", die dies nicht tun. C # macht diese Unterscheidung nicht explizit, obwohl Sie natürlich einen Wert zurückgeben können oder nicht. 

8

Funktion ist ein Satz von Logik, mit dem Daten bearbeitet werden können.

Während Method eine Funktion ist, die zum Manipulieren der Daten des Objekts verwendet wird, wo es hingehört ... Wenn Sie also eine Funktion haben, die nicht vollständig mit Ihrer Klasse zusammenhängt, sondern in der Klasse deklariert wurde, ist sie keine Methode. Es heißt ein schlechtes Design.

8
gian ebao

Da Sie Python erwähnt haben, können Sie im Folgenden die Beziehung zwischen Methoden und Objekten in den meisten modernen objektorientierten Sprachen veranschaulichen. Kurz gesagt ist das, was sie als "Methode" bezeichnen, nur eine Funktion, die ein zusätzliches Argument erhält (wie andere Antworten gezeigt haben), aber Python macht das 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, die ich "Greeter" genannt habe, in der Methode "Selbst"). Daher kann ich die greet-Methode genauso verwenden wie die greet_with_greeter-Funktion (mit der "dot" -Syntax, um darauf zuzugreifen, da ich sie in einer Klasse definiert habe):

Greeter.greet(hello_greeter, "World")

Ich habe also eine Methode effektiv in eine Funktion umgewandelt. Kann ich eine Funktion in eine Methode umwandeln? Nun, da Sie in Python nach der Definition mit Klassen herumspielen können, versuchen wir:

Greeter.greet2 = greet_with_greeter
hello_greeter.greet2("World")

Ja, die Funktion greet_with_greeter wird jetzt auch als Methode greet2 bezeichnet. Dies zeigt den einzigen wirklichen Unterschied zwischen einer Methode und einer Funktion: Wenn Sie eine Methode "on" aufrufen, indem Sie object.method(args) aufrufen, verwandelt die Sprache sie magisch in method(object, args).

(OO-Puristen mögen argumentieren, dass eine Methode etwas anderes ist als eine Funktion, und wenn Sie sich für fortgeschrittenes Python oder Ruby - oder Smalltalk! - interessieren, werden Sie ihren Sinn erkennen. Auch einige Sprachen geben Methoden einen besonderen Zugriff auf Bits eines Objekts. Aber Der wesentliche konzeptionelle Unterschied ist immer noch der versteckte zusätzliche Parameter.)

8
Sam Stokes

für mich: Die Funktion einer Methode und einer Funktion ist die gleiche, wenn ich zustimme, dass:

  • eine Funktion kann einen Wert zurückgeben
  • kann Parameter erwarten

Genau wie bei jedem Code können Sie Objekte haben, die Sie eingegeben haben, und Sie haben möglicherweise ein Objekt als Ergebnis. Während sie dies tun, ändern sie möglicherweise den Zustand eines Objekts, aber das würde ihre grundlegende Funktion für mich nicht ändern.

Möglicherweise gibt es eine Definition, die sich beim Aufruf von Funktionen von Objekten oder anderen Codes unterscheidet. Aber ist das nicht etwas für verbale Unterschiede und deshalb tauschen die Leute sie aus? Das erwähnte Berechnungsbeispiel würde ich vorsichtig sein. weil ich Mitarbeiter anhebe, 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, befreite ich ihn und überlasse es dem Carbagesammler, ungenutzte Mitarbeiter zu entsorgen, und erledige den Rest, um einen neuen Mitarbeiter zu gewinnen.

Selbst wenn man argumentiert, dass eine Methode eine Objektfunktion ist und eine Funktion eine nicht verknüpfte Berechnung ist, wird mir dies nicht helfen. Der Funktionsdeskriptor selbst und idealerweise die Dokumentation der Funktion sagt mir, was er braucht und was er zurückgeben kann. Der Rest, wie das Manipulieren eines Objektzustands, ist für mich nicht wirklich transparent. Ich erwarte von beiden Funktionen und Methoden, dass sie das liefern und bearbeiten, was sie behaupten, ohne dass sie im Detail wissen müssen, wie sie es tun. Selbst eine reine Rechenfunktion kann den Status der Konsole ändern oder an eine Protokolldatei anhängen.

7
Dirk Schumacher

In erster Näherung erster Ordnung ist eine Methode (im C++ - Stil OO) ein anderes Word für eine Member-Funktion, dh eine Funktion, die Teil einer Klasse ist.

In Sprachen wie C/C++ können Sie Funktionen haben, die keine Mitglieder einer Klasse sind. Sie nennen eine Funktion, die keiner Klasse zugeordnet ist, keine Methode.

4

Nach meinem Verständnis ist eine Methode jede Operation, die an einer Klasse ausgeführt werden kann. Es ist ein allgemeiner Begriff, der in der Programmierung verwendet wird. 

In vielen Sprachen werden Methoden durch Funktionen und Subroutinen 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 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 wäre.

4
marcj

Lassen Sie uns nicht zu komplizieren, was eine sehr einfache Antwort sein sollte. Methoden und Funktionen sind dasselbe. Sie rufen eine Funktion als Funktion auf, wenn sie sich außerhalb einer Klasse befindet, und Sie nennen eine Funktion eine Methode, wenn sie in eine Klasse geschrieben wird. 

3
SamyCode

IMHO-Leute wollten einfach nur ein neues Word entwickeln, um die Kommunikation zwischen Programmierern zu vereinfachen, wenn sie sich auf Funktionen innerhalb von Objekten beziehen möchten. 

Wenn Sie Methoden sagen, meinen Sie Funktionen innerhalb der Klasse ..__ Wenn Sie Funktionen sagen, meinen Sie Funktionen außerhalb der Klasse.

Die Wahrheit ist, dass beide Wörter zur Beschreibung von Funktionen verwendet werden. 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 , um das Problem zu lösen.

Es tut dasselbe. Es ist das selbe Ding. Wenn Sie extrem präzise sein und die Konventionen befolgen möchten, können Sie Methoden als Funktionen innerhalb von Objekten aufrufen.

3
Morfidon

Funktion ist das Konzept, das hauptsächlich zu Prozedurorientierter Programmierung gehört wobei eine Funktion eine Entität ist, die Daten verarbeiten kann und Ihren Wert zurückgibt

Methode ist das Konzept der Objektorientierten Programmierung wobei eine Methode Mitglied einer Klasse ist, die meistens die Klassenmitglieder bearbeitet.

3
Akshay Khale

Ich weiß, dass viele andere bereits geantwortet haben, aber ich habe folgendes gefunden: eine einfache, aber effektive einzeilige Antwort. Es sieht zwar nicht viel besser aus als andere Antworten hier, aber wenn Sie es sorgfältig lesen, haben Sie alles, was Sie über die Methode vs Funktion wissen müssen. 

Eine Methode ist eine Funktion, die einen definierten Empfänger hat. In OOP ist eine Methode eine Funktion auf einer Instanz eines Objekts.

2
f-society

Ich bin kein Experte, aber das weiß ich:

  1. Funktion ist ein C-Sprachbegriff, bezieht sich auf einen Code und der Funktionsname ist der Bezeichner für diese Funktion.

  2. Die Methode ist der Begriff OO. In der Regel ist dieser Zeiger im Funktionsparameter enthalten. Sie können diesen Code nicht wie C aufrufen, sondern müssen ein Objekt verwenden, um ihn aufzurufen.

  3. Die Aufrufmethoden sind ebenfalls unterschiedlich. Hier rufen Sie die Bedeutung auf, um die Adresse dieses Codeteils zu finden. Bei C/C++ wird die Verknüpfungszeit anhand des Funktionssymbols gesucht.

  4. Ziel-C ist anders. Rufen Sie die Bedeutung einer C-Funktion auf, um die Adresse anhand der Datenstruktur zu ermitteln. Es bedeutet, dass alles zur Laufzeit bekannt ist.

2
Marvin

Hier einige Erklärungen für die Methode vs. Funktion anhand von JavaScript-Beispielen:

test(20, 50); ist Funktion definieren und verwenden, 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 verschiedenen 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 test () kann eine Methode eines Objekts sein oder ein benutzerdefinierter Prototyp für eingebaute Objekte sein, hier eine Erklärung:

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.

Eingebaute 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 Object Method , Funktionen , Weitere Informationen zum Prototyp

1
Lahar Shah

Unterschied zwischen Methoden und Funktionen

Aus dem Lesen von dieses Dokument bei Microsoft 

Member, die ausführbaren Code enthalten, werden als Funktionsmitglieder einer Klasse bezeichnet. Im vorhergehenden Abschnitt werden Methoden beschrieben, bei denen es sich um die primäre Art von Funktionsmitgliedern handelt. In diesem Abschnitt werden die anderen Arten von Funktionsmitgliedern beschrieben, die von C # unterstützt werden: Konstruktoren, Eigenschaften, Indexer, Ereignisse, Operatoren und Finalisierer.

Methoden sind also die Untermenge der Funktionen. Jede Methode ist eine Funktion, aber nicht jede Funktion ist eine Methode. Beispielsweise kann eine constructor nicht als -Methode bezeichnet werden, sondern ist eine Funktion.

1
Siraj

Funktion - Eine Funktion in einem unabhängigen Code, die einige Logik und muss unabhängig aufgerufen werden mussund sind außerhalb der Klasse definiert.

Methode - Eine Methode ist ein unabhängiger Code, der wird in Bezug auf ein Objekt aufgerufen und innerhalb der Klasse definiert.

0
Aditya Malviya

Eine Klasse ist die Sammlung einiger Daten und Funktionen, optional mit einem Konstruktor.

Während Sie eine Instanz (Kopie, Replikation) dieser bestimmten Klasse erstellen, initialisiert der Konstruktor die Klasse und gibt ein Objekt zurück. 

Nun wird die Klasse zum Objekt (ohne Konstruktor) & Funktionen werden im Objektkontext als Methode bezeichnet.

Also im Grunde genommen 

Klasse <== neues ==> Objekt

Funktion <== neue ==> Methode

In Java wird im Allgemeinen gesagt, dass der Konstrukturname dem Klassennamen entspricht, aber in Wirklichkeit ist der Konstruktor wie ein Instanzblock und ein statischer Block;

Die Klasse kann einen statischen Block, einen Instanzblock, einen Konstruktor und eine Funktion .__ haben. Das Objekt hat im Allgemeinen nur Daten und Methoden.

0

In C++ wird die Methode manchmal verwendet, um den Begriff der Memberfunktion einer Klasse wiederzugeben. Vor kurzem fand ich jedoch eine Aussage in dem Buch «Die C++ - Programmiersprache 4. Auflage» auf Seite 586 "Abgeleitete Klassen".

Eine virtuelle Funktion wird manchmal als Methode bezeichnet.

Dies ist etwas verwirrend, aber er sagte manchmal , so dass es ungefähr Sinn macht, dass C++ Creator Methoden sieht, da Funktionen auf Objekte aufgerufen werden können und sich polymorph verhalten.

0
Lance LI