Frage

Kann jemand eine einfache Erklärung Methoden vs. Funktionen in OOP Kontext?

War es hilfreich?

Lösung

Funktion ist ein Stück Code, der namentlich genannt wird. Es kann Daten übergeben wird zum Betrieb auf (das heißt der Parameter) und wahlweise Daten zurück (der Rückgabewert). Alle Daten, die an eine Funktion übergeben wird, wird explizit übergeben.

A Methode ist ein Stück Code, der durch einen Namen aufgerufen wird, die mit einem Objekt verknüpft ist. In den meisten Punkten ist es identisch mit einer Funktion, außer für zwei wesentliche Unterschiede:

  1. Ein Verfahren geführt wird implizit das Objekt, auf dem es hieß.
  2. Verfahren auf Daten zu arbeiten in der Lage ist, die in der Klasse enthalten ist (daran erinnern, dass ein Objekt eine Instanz einer Klasse - die Klasse die Definition ist, ist das Objekt eine Instanz dieser Daten)
  3. .

(dies ist eine vereinfachte Erklärung, ohne auf Fragen des Umfangs usw.)

Andere Tipps

Ein Verfahren ist auf ein 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 ++ wäre es davon ab, ob Sie in einer Klasse sind.

'Methode' ist das objektorientierte Wort 'Funktion' . Das ist so ziemlich alles, was es ihn (dh., Kein wirklicher Unterschied).

Leider denke ich, dass viele der hier Antworten zu verewigen oder die Idee voran, dass es einige komplexe, spürbarer Unterschied.

Wirklich -. Es ist gar nicht so viel, um es nur verschiedene Worte für die gleiche Sache

[späte Zugabe]


In der Tat, wie Brian Neal wies in einem Kommentar, um this Frage , die C ++ Standard verwendet nie den Begriff ‚Methode‘, wenn auf Elementfunktionen beziehen. Einige Leute können nehmen, dass als Hinweis darauf, dass C ++ ist nicht wirklich eine objektorientierte Sprache; aber ich bevorzuge es als Hinweis zu nehmen, dass eine ziemlich intelligente Gruppe von Menschen hätte nicht gedacht, da ein besonders starker Grund war mit einem anderen Begriff zu verwenden.

Generell gilt: Methoden sind Funktionen, die zu einer Klasse gehören, können Funktionen sein jedem anderen Umfang des Codes, so dass Sie feststellen können, dass alle Methoden sind Funktionen, aber nicht alle Funktionen sind 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 „Tür“, die ein Verfahren oder eine Aktion namens „offen“, wird ein Verfahren bezeichnet, weil sie innerhalb einer Klasse deklariert wurde. Es gibt einen anderen Teil des Codes mit „def“ knapp unter dem definiert eine Funktion, es ist eine Funktion, weil sie nicht innerhalb einer Klasse deklariert wird, diese Funktion die Methode aufruft wir in unserer Klasse definiert, wie Sie sehen können, und schließlich wird die Funktion sein genannt von selbst aus.

Wie Sie sehen können Sie überall eine Funktion aufrufen können, aber wenn Sie eine Methode aufrufen wollen entweder Sie haben ein neues Objekt vom gleichen Typ wie die Klasse zu übergeben die Methode deklariert wird (class.method (Objekt)), oder Sie haben das Verfahren innerhalb des Objekts (objekt.methode ()), zumindest in Python aufzurufen.

Denken Sie an Methoden wie die Dinge nur eine Einheit tun, wenn Sie also eine Hundeklasse haben würde es Sinn machen, eine Rinde Funktion in dieser Klasse nur zu haben, und das wäre ein Verfahren sein, wenn Sie auch eine Person-Klasse haben es könnte Sinn ergibt eine Funktion „Futter“ zu schreiben, für die beide nicht zu einer Klasse gehört, da Menschen und Hunde zugeführt werden können und man konnte rufen, dass eine Funktion, da sie nicht besonders zu jeder Klasse gehört.

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

  

Die Funktionen werden außerhalb von Klassen definiert, während Methoden innerhalb von und einem Teil der Klassen definiert sind.

Einfache Art und Weise zu erinnern:

  • F Salbung → F ree (Free gehören bedeutet, nicht auf ein Objekt oder Klasse)
  • M ethode → M Ember (Ein Mitglied eines Objekts oder einer Klasse)

Wenn Sie Lesen wollen, hier ist "Meine Einführung in die OO-Methoden"

Die Idee hinter dem Objekt-Orientierten Paradigma ist die "Bedrohung" die software ist aus ..auch "Objekte".Objekte in der realen Welt haben Eigenschaften, zum Beispiel, wenn Sie einen Mitarbeiter, der Mitarbeiter hat einen Namen, eine Mitarbeiter-id, eine position, die er gehört zu einer Abteilung etc.etc.

Das Objekt, auch wissen wie man mit seine Attribute und führen Sie einige Operationen an Ihnen.Lassen Sie sagen, wenn wir wissen wollen, was ein Mitarbeiter tun, gerade jetzt würden wir ihn Fragen.

employe whatAreYouDoing.

Das "whatAreYouDoing" ist eine "Nachricht" an das Objekt gesendet.Das Objekt weiß, wie die Antwort auf diese Fragen, es ist sagte, dass es eine "Methode", um zu lösen die Frage.

Die Art und Weise wie Objekte verfügbar zu machen sein Verhalten als Methoden bezeichnet.Methoden sind somit das Artefakt, das Objekt zu "tun".

Weitere mögliche Methoden sind

employee whatIsYourName
employee whatIsYourDepartmentsName

etc.

Funktionen in der anderen hand, sind die Möglichkeiten, eine Programmiersprache zu berechnen einige Daten, zum Beispiel haben Sie vielleicht die Funktion addValues( 8 , 8 ) zurückgibt 16

// pseudo-code
function addValues( int x, int y )  return x + y 
// call it 
result = addValues( 8,8 )
print result // output is 16...

Seit der ersten Programmiersprachen ( z.B. fortran, c, pascal ) nicht abdeckt, das OO-Paradigma, die Sie nur aufrufen, um diese Artefakte "Funktionen".

zum Beispiel die Vorherige Funktion in C:

int addValues( int x, int y ) 
{
   return x + y;
}

Es ist nicht "natürlich" zu sagen, dass ein Objekt hat eine "Funktion", um eine bestimmte Aktion ausführen, da Funktionen sind im Zusammenhang mit mathematischen Sachen, während ein Mitarbeiter hat wenig Mathematik, aber Sie können die Methoden, die genau das gleiche tun, da Funktionen, zum Beispiel in Java wäre dies das äquivalent addValues Funktion.

public static int addValues( int x, int y ) {
    return x + y;
}

Vertraut aussieht?Das ist, weil Java haben Ihre Wurzeln auf C++ und C++ auf C

Am Ende ist nur ein Konzept, bei Umsetzung, die Sie Aussehen könnte die gleiche, aber in der OO-Dokumentation werden diese als Methode.

Heres ein Beispiel für die zuvor 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 ist dann auf der "Domäne", wo es angewendet wird.

AppleScript haben die Idee der "natürlichen Sprache" matphor , dass irgendwann OO hatte.Zum Beispiel Smalltalk.Ich hoffe ich kann es sinnvoll sein, einfacher für Sie zu verstehen, von Methoden in Objekten nach, die dies Lesen.

HINWEIS:Der code wird nicht kompiliert werden, nur als Beispiel dienen.Fühlen Sie sich frei zu ändern die post, und fügen Sie Python-Beispiel.

In OO Welt sind die beiden häufigsten das Gleiche bedeuten, die verwendet.

Von einer reinen Mathematik und CS Perspektive wird eine Funktion immer das gleiche Ergebnis zurück, wenn mit den gleichen Argumenten (f (x, y) = (x + y)) genannt. Ein Verfahren auf der anderen Seite wird in der Regel mit einer Instanz einer Klasse zugeordnet. obwohl wieder die meisten modernen OO-Sprachen nicht mehr verwenden den Begriff „Funktion“ für den größten Teil. Viele statischen Methoden können durchaus wie Funktionen, da sie haben in der Regel keinen Zustand (nicht immer wahr).

Nehmen wir an, eine Funktion ein Codeblock ist (in der Regel mit einem eigenen Rahmen und manchmal mit einem eigenen Verschluss), die einige Argumente empfangen und kann auch ein Ergebnis zurück.

Eine Methode ist eine Funktion, die von einem Objekt gehört (in einigen objektorientierten Systemen, ist es richtig zu sagen, ist es durch eine Klasse gehört). „Besitz“ von einem Objekt, das / Klasse bedeutet, dass Sie auf das Verfahren durch das Objekt / Klasse beziehen; zum Beispiel in Java wollen, wenn Sie eine Methode „open ()“ von einem Objekt „Tür“ Sie schreiben müssen „door.open ()“ im Besitz aufzurufen.

In der Regel Methoden gewinnen auch einige zusätzliche Attribute ihr Verhalten innerhalb des Objekts / Klasse beschreiben, zum Beispiel: Sichtbarkeit (bezogen auf das objektorientierte Konzept der Kapselung), die sich von denen definiert Objekte (oder Klassen) kann die Methode aufgerufen werden.

In vielen objektorientierten Sprachen, alle „Funktionen“ gehören zu einem Objekt (oder Klasse) und so in dieser Sprache gibt es keine Funktionen, die nicht Methoden sind.

Methoden sind Funktionen von Klassen. Im Normal Jargon, Menschen Austauschverfahren und Funktion am ganzen Körper. Grundsätzlich kann man von ihnen denken, als die gleiche Sache (nicht sicher, ob globale Funktionen Methoden genannt werden).

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

Eine Funktion ist ein mathematisches Konzept. Zum Beispiel:

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

sagt, dass Funktion f () die Sünde des ersten Parameters zurück zum Cosinus des zweiten Parameters hinzugefügt. Es ist nur Mathematik. Wie es Sünde geschieht () und cos () sind auch Funktionen. Eine Funktion hat eine andere Eigenschaft:. Alle Anrufe an eine Funktion mit den gleichen Parametern, sollte das gleiche Ergebnis zurück

Ein Verfahren, auf der anderen Seite, ist eine Funktion, die auf ein Objekt in einer objektorientierten Sprache zusammenhängt. Es hat einen impliziten Parameter:. Das Objekt auf eingewirkt (und es ist Zustand)

Also, wenn Sie ein Objekt Z mit einem Verfahren g (x) haben, könnten Sie sehen folgende:

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

In diesem Fall wird der Parameter x übergeben, die gleichen wie in der Funktion Beispiel früher. Jedoch ist der Parameter auf cos () ein Wert, der innerhalb des Objekt Z. Z und die Daten Leben, die im Innern (Z.y) sind implizite Parameter Zs g () Methode lebt.

Funktion oder ein Verfahren ist ein benannter aufrufbar Stück Code, die einige Operationen durchführt und gegebenenfalls einen Wert zurückgibt.

C Sprache der Begriff Funktion verwendet wird. Java & C # Menschen wäre es ein Verfahren sagen (und eine Funktion in diesem Fall innerhalb einer Klasse / Objekt definiert).

C ++ Programmierer könnte es als eine Funktion oder manchmal Methode (je nachdem, ob sie verfahrens Stil c ++ Code schreiben oder tun objektorientierte Art und Weise von C ++, auch eine C / C ++ nur Programmierer würde wahrscheinlich nennt es eine Funktion, weil Begriff ‚Methode‘ weniger häufig in C / C ++ Literatur) verwendet wird.

Sie verwenden eine Funktion von nur nannte es seinen Namen wie

result = mySum(num1, num2);


Sie würden zunächst durch Bezugnahme auf die Aufgabe, eine Methode aufrufen, wie,

result = MyCalc.mySum(num1,num2);

Historisch gesehen, kann es einen feinen Unterschied mit einer „Methode“ etwas zu sein haben, die keinen Wert zurückgibt, und eine „Funktion“ eine, die does.Each Sprache seine eigene hat Lexikon der Begriffe mit besonderer Bedeutung.

In "C" , das Wort "Funktion" Hilfe eine Programmroutine .

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

In C # , die als würde übersetzen:

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

Aber wirklich, ich wieder Iterierte, dass es wirklich kein Unterschied in den zwei Konzepten. Wenn Sie den Begriff „Funktion“ in informellen Gesprächen über Java verwenden, werden die Leute annehmen, dass Sie „Methode“ gemeint und weitermachen. Verwenden Sie es nicht in der richtigen Dokumente oder Präsentationen über Java verwenden, oder Sie werden aussehen dumm.

Methoden für eine Klasse wirkt auf der Instanz der Klasse, die so genannte Objekt.

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

OO Sprachen wie Object Pascal oder C ++, eine „Methode“ ist eine Funktion, die einem Objekt zugeordnet. So zum Beispiel eines „Hund“ Objekt könnte eine „Rinde“ Funktion und dies wäre eine „Methode“ in Betracht gezogen werden. Im Gegensatz dazu steht die „StrLen“ Funktion allein (es bietet die Länge einer Zeichenkette als Argument zur Verfügung gestellt). Es ist daher nur eine "Funktion". Javascript ist technisch als auch objektorientiert, sondern steht vor vielen Einschränkungen im Vergleich zu einer ausgewachsenen Sprache wie C ++, C # oder Pascal. Dennoch sollte die Unterscheidung immer noch halten.

Ein paar zusätzliche Fakten: „Funktionen“ C # vollständig ausgerichtet ist Objekt, so dass Sie keine eigenständigen erstellen In C # ist jede Funktion an ein Objekt gebunden ist und somit technisch ein „Verfahren“. Der Kicker ist, dass nur wenige Menschen in C #, um sie als „Methoden“ beziehen -. Sie nur die Begriff „Funktionen“ verwenden, weil es kein wirklicher Unterschied ist gemacht werden

Schließlich - nur so irgendwelche Pascal Gurus auf mich nicht springen hier - Pascal unterscheidet auch zwischen „Funktionen“ und „Verfahren“ (die einen Wert zurückgeben), die dies nicht tun. C # ist diese Unterscheidung nicht explizit, obwohl Sie können natürlich, wählen Sie einen Wert oder nicht zurückzukehren.

Da Sie Python erwähnt, ist die folgende könnte eine nützliche Darstellung der Beziehung zwischen Methoden und Objekte in den meisten modernen objektorientierten Sprachen sein. Auf den Punkt gebracht, was sie eine „Methode“ nennen, ist nur eine Funktion, die ein zusätzliches Argument übergeben wird (wie andere Antworten darauf hingewiesen haben), aber Python macht, dass deutlicher als in den 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")

Jetzt vergleicht die Funktion greet_with_greeter und die Methode greet: der einzige Unterschied der Name des ersten Parameters ist (in der Funktion rief ich es „Greeter“, in der Methode, die ich nannte es „selbst“). So kann ich die greet Methode verwenden, auf genau die gleiche Art und Weise, wie ich die greet_with_greeter Funktion (mit der „Punkt“ Syntax, um es zu bekommen, da ich es in einer Klasse definiert):

Greeter.greet(hello_greeter, "World")

So habe ich gedreht effektiv ein Verfahren in eine Funktion. Kann ich eine Funktion in ein Verfahren verwandeln? Nun, wie Python kann Sie verwirrt mit Klassen, nachdem er definiert ist, lassen Sie sich versuchen:

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

Ja, wird die Funktion greet_with_greeter nun auch als Methode greet2 bekannt. Dies zeigt die einzige wirkliche Unterschied zwischen einem Verfahren und einer Funktion:., Wenn Sie eine Methode „auf“ ein Objekt aufrufen, indem object.method(args) Aufruf, die Sprache auf magische Weise verwandelt es in method(object, args)

(OO Puristen könnte ein Verfahren argumentieren sind etwas anderes als eine Funktion, und wenn Sie in fortgeschrittener Python oder Ruby bekommen - oder Smalltalk - Sie werden beginnen, ihre Stelle zu sehen, auch in einigen Sprachen geben Methoden besonderen Zugang zu Bits ein. Objekt. Aber der wichtigste begriffliche Unterschied ist immer noch die versteckten zusätzlichen Parameter.)

Die Funktion ist ein Satz von Logik, die verwendet werden können, Daten zu manipulieren.

Während ist Methode Funktion, die verwendet wird, um die Daten des Objekts zu manipulieren, wo es hingehört. Technisch gesehen, wenn Sie eine Funktion, die nicht vollständig auf Ihre Klasse verwandt ist, wurde aber in der Klasse deklariert, es ist kein Verfahren; Es ist ein schlechtes Design genannt.

für mich: die Funktion eines Verfahrens und einer Funktion ist die gleiche, wenn ich zustimmen:

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

Wie jedes Stück Code können Sie Objekte, die Sie in setzen und Sie können ein Objekt, das als Ergebnis kommt. Während tun, dass sie den Zustand eines Objekts ändern könnte, aber das wäre nicht ihre grundsätzliche Funktion für mich ändern.

Es könnte eine Definition differenzier seine Funktionen von Objekten oder anderen Codes in aufrufen. Aber ist das nicht etwas für eine verbale Differenzierungen und deshalb sie Menschen austauschen? Das erwähnt Beispiel der Berechnung würde ich vorsichtig sein. weil ich mieten employes meine Berechnungen zu tun:

new Employer().calculateSum( 8, 8 );

Durch das so tut, kann ich vertrauen auf einem Arbeitgeber für die Berechnungen verantwortlich zu sein. Wenn er mehr Geld will befreien ich ihn und lassen Sie die Funktion des Carbage Sammler ungenutzt Mitarbeiter der Entsorgung den Rest und einen neuen Mitarbeiter bekommen.

argumentiert Auch, dass ein Verfahren ein Objekt Funktion ist und eine Funktion ist nicht verbundene Berechnung wird mir nicht helfen. Der Funktionsdeskriptor selbst und im Idealfall in der Dokumentation der Funktion wird mir sagen, was er braucht und was es zurückkehrt. Der Rest ist, wie einige Objekte staatliche Manipulation ist nicht wirklich transparent zu mir. Ich erwarte beiden Funktionen und Methoden zu liefern und zu manipulieren, was sie behaupten, ohne dass im Detail wissen, wie sie es tun. Auch eine reine Rechenfunktion könnte die staatliche Konsole ändern oder zu einer Protokolldatei anhängen.

Von meinem Verständnis ein Verfahren ist jede Maßnahme, die auf einer Klasse durchgeführt werden kann. Es ist ein allgemeiner Begriff in der Programmierung verwendet.

In vielen Sprachen Methoden werden von Funktionen und Subroutinen dargestellt. Der Hauptunterschied, dass die meisten Sprachen für diese verwenden, ist, dass Funktionen einen Wert zurückgeben kann zurück an den Anrufer und ein Unterprogramm kann nicht. Doch viele moderne Sprachen nur Funktionen haben, aber diese können optional keinen Wert zurück.

Zum Beispiel können Sie sagen, eine Katze beschreiben wollen, und Sie möchten, dass zum Gähnen können. Sie würden eine Cat-Klasse erstellen, mit einem Gähnen Methode, die höchstwahrscheinlich eine Funktion ohne Rückgabewert wäre.

Zu einer Näherung ersten Ordnung, ein Verfahren (in C ++ style OO) ist ein anderes Wort für eine Elementfunktion, dh eine Funktion, die einen Teil einer Klasse ist.

In Sprachen wie C / C ++ Sie Funktionen haben kann, die nicht Mitglieder einer Klasse sind; Sie rufen Sie nicht eine Funktion nicht mit einer Klasse ein Verfahren verbunden sind.

IMHO Leute wollten nur neues Wort für eine einfachere Kommunikation zwischen Programmierern erfinden, wenn sie Funktionen im Inneren Objekten beziehen wollten.

Wenn Sie sagen, Methoden, die Sie Funktionen innerhalb der Klasse bedeuten. Wenn Sie Funktionen sagen, meinen Sie einfach außerhalb der Klasse funktioniert.

Die Wahrheit ist, dass beiden Worte verwendete Funktionen zu beschreiben. Auch wenn Sie es falsch nichts falsch verwendet passiert. Beide Worte beschreiben genau, was Sie in Ihrem Code erreichen wollen.

Die Funktion ist ein Code, der eine Rolle zu spielen hat ( eine Funktion ), etwas zu tun. Methode ist ein Verfahren , um das Problem zu lösen.

Es tut das Gleiche. Es ist das selbe Ding. Wenn Sie möchten, Super um genau zu sein und mit der Konvention mitgehen Sie Methoden wie die Funktionen im Inneren Objekte aufrufen können.

Die Funktion ist das Konzept vor allem die zu Vorgehen orientierte Programmierung , wo eine Funktion ist eine eine Einheit, die Daten verarbeiten kann und gibt Sie Wert

Methode ist das Konzept der Objektorientierte Programmierung , wo ein Verfahren ist ein Mitglied einer Klasse, die meist tut Verarbeitung der Klassenmitglieder.

Lassen Sie sich nicht über komplizieren, was eine sehr einfache Antwort sein sollte. Methoden und Funktionen sind die gleiche Sache. Sie rufen eine Funktion eine Funktion, wenn es außerhalb einer Klasse ist, und Sie eine Funktion eine Methode aufrufen, wenn es innerhalb einer Klasse geschrieben wird.

Ich bin kein Experte, aber das ist, was ich weiß:

  1. Funktion C Sprache Begriff wird, bezieht er sich auf ein Stück Code und den Namen der Funktion wird die Kennung sein, um diese Funktion nutzen zu können.

  2. OO-Methode ist die Laufzeit, in der Regel hat sie einen diesen Zeiger in den Funktionsparametern. Sie können dieses Stück Code wie C aufrufen, müssen Sie Objekt verwenden, um es aufzurufen.

  3. Die invoke Methoden sind auch unterschiedlich. Hier invoke bedeutet die Adresse dieses Stück Code zu finden. C / C ++, die Verbindungszeit wird die Funktion Symbol verwenden zu suchen.

  4. Objecive-C ist anders. Rufen Sie eine C-Funktion Bedeutung Datenstruktur zu verwenden, um die Adresse zu finden. Es bedeutet, alles wird zur Laufzeit bekannt.

Ich weiß, haben viele andere schon beantwortet, aber ich fand folgende ist eine einfache, aber effektive einzige Zeile Antwort. Obwohl es als andere Antworten hier nicht viel besser aussehen, aber wenn man es sorgfältig zu lesen, es hat alles, was Sie über die Methode vs Funktion kennen.

Ein Verfahren ist eine Funktion, die einen definierte Empfänger, in OOP Bedingungen hat, ein Verfahren mit einer Funktion auf einer Instanz eines Objekts ist.

Unterschied zwischen Methoden und Funktionen

Aus der Lektüre diese doc auf Microsoft

  

Die Mitglieder, die ausführbaren Code enthalten, als die Funktions Mitglieder einer Klasse gemeinsam bekannt. Der vorstehende Abschnitt beschreibt Verfahren, die die primäre Art von Funktion Mitgliedern sind. Dieser Abschnitt beschreibt die anderen Arten von Funktionselementen von C # unterstützt:. Konstrukteuren, Eigenschaften, Indexer, Ereignissen, Operatoren und Finalizers

So Methoden die Teilmenge der Funktionen sind. Jede Methode ist eine Funktion, aber nicht jede Funktion ist ein Verfahren, zum Beispiel kann ein constructor nicht als Methode gesagt werden, aber es ist eine Funktion.

Hier ist eine Erklärung für die Methode vs. Funktion mit JavaScript Beispiele:

test(20, 50); ist Funktion definieren und verwenden, um einige Schritte zu laufen oder Rückkehr etwas zurück, die gespeichert werden kann / verwendet irgendwo.

  

Sie können die Wiederverwendung von Code: Definieren Sie den Code einmal und benutzen sie oft

.      

können Sie den gleichen Code verwenden viele Male mit verschiedenen Argumenten, zu unterschiedlichen Ergebnissen führen.

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 () ein Verfahren eines Objekts sein kann oder benutzerdefinierte ein Prototyp für integrierte Objekte definiert, hier ist mehr Erklärung:

  

JavaScript-Methoden sind die Aktionen, die auf Objekten ausgeführt werden können.

     

Eine JavaScript-Methode ist eine Eigenschaft, eine Funktionsdefinition enthält.

Einbau-Eigenschaft / Methode für Zeichenfolgen in javascript:

var message = "Hello world!";
var x = message.toUpperCase();
//Output: HELLO WORLD!

Benutzerdefinierte 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 Eigenschaften für String definieren, Array, usw. wie auch zum Beispiel

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 über Prototyp

Funktion -. Eine Funktion in einem unabhängigen Stück Code, die eine gewisse Logik und enthält, muss unabhängig aufgerufen werden und sind außerhalb der Klasse definiert

Method - Verfahren ist ein unabhängiges Stück Code, der ist unter Bezugnahme auf ein Objekt bezeichnet und sind innerhalb der Klasse definiert werden,

.

In C ++, manchmal wird die Methode verwendet, um den Begriff der Elementfunktion einer Klasse zu reflektieren. Doch vor kurzem fand ich eine Aussage in dem Buch «Die C ++ Programmiersprache 4th Edition», auf Seite 586 „Abgeleitete Klassen“

  

Eine virtuelle Funktion manchmal eine Methode aufgerufen wird.

Dies ist ein wenig verwirrend, aber er sagte, manchmal , so macht es etwa Sinn, C ++ Schöpfer neigen Methoden, um zu sehen, wie Funktionen auf Objekte aufgerufen werden können und polymorphe verhalten.

Eine Klasse ist die Sammlung von einigen Daten und Funktion optional mit einem Konstruktor.

Während Sie den Konstruktor eine Instanz (Kopieren, Replikation) diese bestimmten Klasse erstellen initialisieren die Klasse und gibt ein Objekt.

Nun ist die Klasse geworden Objekt (ohne Konstruktor) & Die Funktionen werden als Methode im Objektkontext bekannt.

Also im Grunde

Klasse <== neu ==> Object

Funktion <== neue ==> Methode

In Java ist die allgemein gesagt, als dass der Konstruktor Name gleichen wie Klassennamen aber in real, dass Konstruktor wie zB Block und statischer Block, aber mit mit einem Benutzer Rückgabetyp definieren (d. Klasse-Typ)

Während kann die Klasse hat eine statischer Block, zB Block, Konstruktor, Funktion Das Objekt hat in der Regel nur Daten & Methode.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top