Quelle est la différence entre une méthode et une fonction?
Quelqu'un peut-il fournir une explication simple de méthodes vs fonctions dans le contexte de la programmation orientée objet?
- Voir aussi sous-routine contre la fonction, function vs. procédure, coroutines.
- Lorsque la valeur d'un bien est une fonction, nous l'appelons une méthode
- Quel est le contraire d'une méthode? C'est ma question. "Fonction" est le concept parent. La méthode est un type de fonction. Quel est le nom d'un type de fonction qui n'est pas une méthode, mais qui peuvent être appelés directement par son nom?
- Il serait intéressant de voir une autre explication précisant différence entre les méthodes et les fonctions de r. C'est intéressant comme méthode généralement de contiennent une fonction. Si la méthode est un objet dépendant de la fonction de la fonction de vérification de la classe d'objet
if(class(object)) { ... } else {stop()}
serait conceptuellement équivalents à la méthode?
Vous devez vous connecter pour publier un commentaire.
Un fonction est un morceau de code qui est appelé par son nom. Il peut être transmis de données à opérer (c'est à dire les paramètres) et peut éventuellement renvoyer des données (la valeur de retour). Toutes les données qui est transmis à une fonction est explicitement transmis.
Un méthode est un morceau de code qui est appelé par un nom qui est associé à un objet. Dans la plupart des égards, elle est identique à une fonction, sauf pour les deux principales différences:
(c'est une explication simplifiée, en ignorant les questions de portée etc.)
class method
, tout en "normal" de la méthode (j'.e une méthode associée à un objet particulier) est uninstance method
foo()
. Mais les fonctions anonymes sont pas appelé de cette façon (ils sont anonymes).Une méthode sur un objet.
Une fonction est indépendante de l'objet.
Pour Java, il y a seulement des méthodes.
Pour le C, il y a seulement des fonctions.
Pour le C++, cela dépend de si oui ou non vous êtes dans une classe.
"méthode" est orientée objet, mot pour "fonction". C'est à peu près tout là est à lui (c'est à dire., pas de réelle différence).
Malheureusement, je pense que beaucoup de réponses ici sont de perpétuer ou de faire progresser l'idée qu'il y a un peu complexe, différence significative.
Vraiment - il n'y a pas grand chose, juste des mots différents pour désigner la même chose.
[plus tard]
En fait, comme Brian Neal a souligné dans un commentaire à cette question, la norme C++ n'utilise jamais le terme de "méthode" lorsque se référant à des fonctions de membre du. Certaines personnes peuvent prendre cela comme un signe que le C++ n'est pas vraiment un langage orienté objet; cependant, je préfère le prendre comme une indication qu'un assez intelligents groupe de personnes ne pensais pas qu'il était particulièrement forte raison pour utiliser un terme différent.
self
argument est explicite. Et de nombreuses langues ont des méthodes statiques, qui ne sont pas passé une instance.this
ouself
, mais ces constructions sont alors généralement appelées fonctions, plutôt que de méthodes.(method obj param1 param2)
et(function obj param1 param)
. Et une méthode est appelée méthode (défini avec defmethod), tandis qu'une fonction est appelée une fonction (définie avec defun).En général: les méthodes sont des fonctions qui appartiennent à une classe, les fonctions peuvent être sur n'importe quel autre champ d'application du code de sorte que vous pouvez indiquer que toutes les méthodes sont des fonctions, mais pas toutes les fonctions sont des méthodes:
Prendre exemple python:
L'exemple donné montre une classe appelée "Porte" qui a une méthode ou d'une action appelée "open", c'est une méthode parce qu'elle a été déclarée à l'intérieur d'une classe. Il y a une autre portion de code avec "def" juste en dessous de ce qui définit une fonction, c'est une fonction, car il n'est pas déclarée à l'intérieur d'une classe, cette fonction appelle la méthode que nous avons définie à l'intérieur de notre classe, comme vous pouvez le voir et, enfin, la fonction est appelée par lui-même.
Comme vous pouvez le voir, vous pouvez appeler une fonction n'importe où, mais si vous voulez appeler une méthode, vous devez passer un nouvel objet du même type que la classe de la méthode est déclarée (de la Classe.méthode(objet)) ou alors il faut appeler la méthode à l'intérieur de l'objet (l'objet.Méthode()), au moins en python.
Penser à des méthodes comme les choses qu'une seule entité peut le faire, donc si vous avez un Chien de catégorie, il serait logique d'avoir une écorce de fonction à l'intérieur de la classe et qui serait une méthode, si vous avez aussi une classe de Personne, il peut être utile d'écrire une fonction "alimentation" pour qui n'appartient pas à une catégorie puisqu'à la fois les humains et les chiens peuvent être nourri et vous pourriez l'appeler une fonction, car il n'appartient à aucune classe en particulier.
Façon Simple à retenir:
Une définition très générale de la principale différence entre un Fonction et un Méthode:
Si vous avez envie de lire, ici, est "Mon introduction à l'OO méthodes"
L'idée derrière le paradigme Orienté Objet est de "menace", le logiciel est composé de .. bien "objets". Les objets dans le monde réel ont des propriétés, par exemple si vous avez un Employé, l'employé a un nom, un id d'employé, une position, il appartient à un département, etc. etc.
L'objet également de savoir comment traiter avec ses attributs et d'effectuer certaines opérations sur celles-ci. Disons que si nous voulons savoir ce qu'un employé est en train de faire maintenant, nous voudrions demander à lui.
Que "whatAreYouDoing" est un "message" envoyé à l'objet. L'objet ne sait comment répondre à cette questions, il est dit qu'il a une "méthode" pour résoudre la question.
Donc, la façon dont les objets ont pour exposer son comportement sont appelées méthodes. Les méthodes sont donc l'artefact, objet de "faire" quelque chose.
Les autres méthodes possibles sont
etc.
Fonctions dans l'autre main, sont des moyens d'un langage de programmation a pour calculer certaines données, par exemple, vous pourriez avoir la fonction addValues( 8 , 8 ) qui renvoie 16
Depuis la première populaires langages de programmation ( fortran, c, pascal ) ne couvre pas le paradigme OO, elle ne fait appel à ces artefacts "fonctions".
par exemple la fonction précédente en C serait:
Il n'est pas "naturel" pour dire qu'un objet a une "fonction" pour effectuer une action, parce que les fonctions sont plus liées à des objets mathématiques, tandis qu'un Employé a peu de mathématiques, mais vous pouvez avoir des méthodes qui font exactement la même chose que les fonctions, par exemple en Java, ce serait l'équivalent addValues fonction.
Semble familier? C'est parce que Java a ses racines sur le C++ et C++ sur C.
À la fin est juste un concept, dans la mise en œuvre, ils peuvent regarder la même chose, mais dans le OO documentation de ceux-ci sont appelés méthode.
Heres un exemple de l'ex-Employé de l'objet en Java.
Alors la différence, c'est sur le "domaine" où il est appliqué.
AppleScript ont l'idée de "langue naturelle" matphor qui , à un moment OO avait. Par exemple Smalltalk. J'espère que cela peut être raisonnable, plus facile pour vous de comprendre les méthodes des objets après la lecture de ce.
REMARQUE: Le code n'est pas compilé, juste pour servir d'exemple. N'hésitez pas à modifier le post et ajouter Python exemple.
Dans OO monde, les deux sont couramment utilisés pour désigner la même chose.
À partir d'un pur Mathématiques et CS point de vue, une fonction retournera toujours le même résultat lorsqu'elle est appelée avec les mêmes arguments ( f(x,y) = (x + y) ). Une méthode sur l'autre main, est généralement associé à une instance d'une classe. Encore une fois cependant, la plupart des modernes OO langues n'utilisent plus le terme de "fonction" pour la plupart. De nombreuses méthodes statiques peuvent être tout à fait comme les fonctions, comme ils n'ont généralement aucun état (pas toujours vrai).
Disons, d'une fonction est un bloc de code (en général, avec son propre champ, et parfois avec son propre fermeture) qui peut recevoir des arguments et peut également renvoyer un résultat.
Une méthode est une fonction qui est la propriété d'un objet (dans certains orientée objet des systèmes, il est plus correct de dire qu'il est possédé par une classe). D'être "possédé" par un objet/classe signifie que vous référer à la méthode de l'objet/classe; par exemple, en Java, si vous voulez appeler une méthode "open()" la propriété d'un objet "porte", vous devez écrire "de la porte.open()".
Généralement de méthodes aussi de gagner quelques attributs supplémentaires décrivant leur comportement au sein de l'objet/de la classe, par exemple: la visibilité (liées à l'orientée objet concept d'encapsulation) qui définit à partir de laquelle les objets (ou classes) de la méthode peut être invoquée.
Dans de nombreux langages orientés objet, toutes les "fonctions" appartiennent à un objet (ou une classe) et donc, dans ces langues, il y a pas de fonctions qui ne sont pas des méthodes.
Les méthodes sont des fonctions de classes. En normal, le jargon, les gens échangeur de la méthode et de la fonction sur. Fondamentalement, vous pouvez y penser comme à la même chose (je ne sais pas si les fonctions sont appelées méthodes).
http://en.wikipedia.org/wiki/Method_(computer_science)
Une fonction est un concept mathématique. Par exemple:
dit que la fonction f() retourne le péché du premier paramètre ajouté le cosinus de la deuxième paramètre. C'est juste des maths. Comme il arrive sin() et cos() sont aussi des fonctions. Une fonction a une autre propriété: tous les appels à une fonction avec les mêmes paramètres, doit renvoyer le même résultat.
Une méthode, d'autre part, est une fonction qui est lié à un objet dans un langage orienté-objet. Il a un paramètre implicite: l'objet de la volonté d'autrui (et c'est l'état).
Donc, si vous avez un objet en Z avec une méthode g(x), vous pouvez voir les éléments suivants:
Dans ce cas, le paramètre x est passé, de même que dans l'exemple de la fonction précédente. Toutefois, le paramètre de cos() est une valeur qui vit à l'intérieur de l'objet Z. Z et les données qui vit à l'intérieur (Z. y) sont des paramètres implicites à Z, g() la méthode.
Fonction ou une méthode est nommée "callable" morceau de code qui permet d'effectuer certaines opérations et, éventuellement renvoie une valeur.
Dans C langue le terme de fonction est utilisé. Java & C# de gens disent qu'il une méthode (et une fonction dans ce cas est définie dans une classe/objet).
Un C++ programmeur peut l'appeler une fonction ou d'une méthode parfois (selon si elles sont l'écriture style procédural de code c++ ou font l'objet orienté vers C++, il est aussi un C/C++ seul programmeur serait susceptible d'appeler une fonction à cause terme de "méthode" est moins souvent utilisé en C/C++ de la littérature).
Vous utilisez une fonction simplement en appelant son nom comme,
Vous pouvez appeler une méthode par le référencement de son objet premier, comme,
Historiquement, il peut y avoir une différence subtile avec une "méthode" étant quelque chose qui ne retourne pas de valeur, et une "fonction" qui ne.Chaque langue a sa propre lexique des termes avec une signification particulière.
Dans "C", le mot "fonction" signifie un programme de routine.
Dans Java, le terme "fonction" n'a pas de signification particulière. Alors que "méthode" l'une des routines les formes de la mise en œuvre d'une classe.
Dans C# que l'on peut traduire par:
Mais vraiment, je l'ai ré-itérer qu'il n'y a vraiment aucune différence entre les 2 concepts.
Si vous utilisez le terme "fonction" dans des discussions informelles au sujet de Java, les gens vont penser que vous avez voulu dire "méthode" et de poursuivre. Ne pas l'utiliser dans les documents appropriés ou des présentations à propos de Java, ou vous aurez l'air stupide.
method
... ou je dirais que C'estprocedure
etfunction
.Fonction est un jeu de logique qui peuvent être utilisées pour manipuler des données.
Tout, la Méthode est la fonction qui est utilisée pour manipuler les données de l'objet auquel il appartient.
Techniquement donc, si vous avez une fonction qui n'est pas totalement liés à votre classe, mais a été déclaré dans la classe, ce n'est pas une méthode; Il a appelé à une mauvaise conception.
Méthodes d'une classe de loi sur l'instance de la classe, appelé l'objet.
Dans les langages à objets comme Objet en Pascal ou en C++, une "méthode" est une fonction associée à un objet. Ainsi, par exemple, un "Chien" objet peut avoir une "écorce" et cela serait considéré comme une "Méthode". En revanche, le "StrLen" de la fonction est le seul (il fournit la longueur d'une chaîne de caractères fournie en argument). Il est donc juste une "fonction". Javascript est techniquement Orienté Objet, mais se heurte à de nombreuses limites par rapport à un véritable langage comme C++, C# ou Pascal. Néanmoins, la distinction doit encore tenir.
Un couple de faits supplémentaires: C# est entièrement orienté objet, de sorte que vous ne peut pas créer autonome "fonctions". En C#, chaque fonction est liée à un objet et est donc, techniquement, une "méthode". Le botteur est que peu de gens en C# se référer à eux comme des "méthodes" - ils utilisent le terme de "fonctions", car il n'y a pas de réelle distinction.
Enfin, est - ce juste pour tout Pascal gourous de ne pas sauter sur moi ici - Pascal également la distinction entre les "fonctions" (qui renvoient une valeur) et "procédures" qui ne le sont pas. C# ne pas faire cette distinction explicite bien que vous pouvez, bien sûr, choisir de retourner une valeur ou non.
Puisque vous avez mentionné Python, les éléments suivants pourraient être utiles à l'illustration de la relation entre les méthodes et les objets dans la plupart des modernes, les langages orientés objet. En un mot ce qu'ils appellent une "méthode" est juste une fonction qui reçoit un argument supplémentaire (comme d'autres réponses ont souligné), mais Python rend que plus explicite que la plupart des langues.
Maintenant comparer la fonction
greet_with_greeter
et la méthodegreet
: la seule différence est le nom du premier paramètre (dans la fonction que j'ai appelé "greeter", dans la méthode que j'ai appelé "auto"). Donc, je peux utiliser legreet
méthode exactement de la même façon que j'utilise legreet_with_greeter
fonction (à l'aide de la "dot" de syntaxe de chez elle, depuis que j'ai défini à l'intérieur d'une classe):J'ai donc fait une méthode dans une fonction. Puis-je activer une fonction dans une méthode? Eh bien, comme Python vous permet de gâchis avec des classes après ils sont définis, laissez-vous tenter:
Oui, la fonction
greet_with_greeter
est maintenant aussi connu comme la méthodegreet2
. Ceci montre que la seule vraie différence entre une méthode et une fonction: lorsque vous appelez une méthode "sur" un objet en appelantobject.method(args)
, la langue se transforme comme par magie enmethod(object, args)
.(OO les puristes diront qu'une méthode est quelque chose de différent à partir d'une fonction, et si vous avez avancé Python ou Ruby - ou Smalltalk! - vous allez commencer à voir de leur point. Aussi certaines langues, donner des méthodes d'accès spécial à des bits d'un objet. Mais la principale différence conceptuelle est encore caché paramètre supplémentaire.)
pour moi:
la fonction d'une méthode et d'une fonction est la même si je suis d'accord que:
Tout comme n'importe quel morceau de code que vous pouvez avoir des objets que vous mettez dans et vous pouvez avoir un objet qui vient à la suite. Au cours de ce qu'ils peuvent modifier l'état d'un objet, mais qui ne serait pas modifié leur fonctionnement de base pour moi.
Il pourrait être une définition de la différenciation dans les appels de fonctions à des objets ou à d'autres codes. Mais n'est-ce pas quelque chose pour un verbale differenciations et c'est pourquoi les gens les échange? Les mentions exemple de calcul, je serais prudent avec. parce que je embaucher des employés pour faire mes calculs:
En le faisant de cette manière que je peux compter sur un employeur responsable pour les calculs. Si il veut plus d'argent, je les libérer et de laisser le carbage collector en fonction de la disposition inutilisés employés de faire le reste et d'obtenir un nouvel employé.
Même en faisant valoir qu'une méthode est un des objets de la fonction et une fonction n'est pas liée calcul ne m'aidera pas. La fonction de descripteur de lui-même et, idéalement, la fonction de la documentation vous me dire ce dont il a besoin et ce qu'il peut revenir. Le reste, comme la manipulation de certains objets de l'état n'est pas vraiment transparent pour moi. Je m'attends à la fois les fonctions et les méthodes de livrer et de manipuler ce qu'ils prétendent, sans avoir besoin de savoir dans le détail comment ils le font.
Même une pure fonction de calcul pourrait changer la console de l'état ou de l'ajouter à un fichier de log.
À partir de ma compréhension de la méthode est de toute opération qui peut être effectuée sur une classe. C'est un terme général utilisé dans la programmation.
Dans de nombreuses langues, les méthodes sont représentés par des fonctions et sous-routines. La principale distinction que la plupart des langues utilisent pour ces est que les fonctions peuvent renvoyer une valeur de retour à l'appelant et d'un sous-programme ne peut pas. Cependant de nombreuses langues modernes ont seulement des fonctions, mais ceux-ci peuvent éventuellement ne pas renvoyer une valeur.
Par exemple, disons que vous voulez pour décrire un chat et que vous aimeriez que pour être en mesure de bâiller. Vous devez créer une classe Chat, avec un Bâillement méthode, ce qui serait probablement une fonction sans valeur de retour.
À une approximation du premier ordre, une méthode (dans le style C++ OO) est un autre mot pour une fonction membre, qui est une fonction qui fait partie d'une classe.
Dans des langages comme le C/C++, vous pouvez avoir des fonctions qui ne sont pas membres d'une classe, vous n'avez pas appeler une fonction n'est pas associé à une classe, une méthode.
Fonction le concept est principalement appartenant à Procédure de programmation orienté où une fonction est une entité qui traite les données et vous renvoie la valeur
Méthode est le concept de de la programmation Orientée Objet où une méthode est un membre d'une classe qui pour la plupart n'traitement sur les membres de la classe.
À mon humble avis, les gens voulaient simplement à inventer de nouvelles word pour faciliter la communication entre les programmeurs quand ils ont voulu se référer à des fonctions à l'intérieur des objets.
Si vous dites méthodes vous dire des fonctions à l'intérieur de la classe.
Si vous dites fonctions vous dire simplement les fonctions en dehors de la classe.
La vérité est que les deux mots sont utilisés pour décrire les fonctions. Même si vous l'avez utilisé, à tort, rien de mal se passe. Les deux mots décrivent bien ce que vous voulez réaliser dans votre code.
Fonction est un code qui a un rôle à jouer (une fonction) de faire quelque chose.
La méthode est une méthode pour résoudre le problème.
Il fait la même chose. C'est la même chose. Si vous voulez être super précis et aller de pair avec la convention que vous pouvez appeler des méthodes sur les fonctions à l'intérieur des objets.
Soyons pas plus compliquer que doit être une réponse très simple. Les méthodes et les fonctions sont la même chose. Vous appelez une fonction une fonction lorsqu'il est à l'extérieur de la classe, et que vous appelez une fonction, une méthode, lorsqu'elle est écrite à l'intérieur d'une classe.
Je ne suis pas un expert, mais c'est ce que je sais:
Fonction du langage C terme, il se réfère à un morceau de code et le nom de la fonction sera l'identifiant à utiliser cette fonction.
Méthode est la OO terme, en général, il a une de ce pointeur dans le paramètre de la fonction. Vous ne pouvez pas invoquer ce morceau de code comme en C, vous devez utiliser l'objet de l'invoquer.
Les appeler des méthodes sont également différents. Ici invoquer sens pour trouver l'adresse de ce morceau de code. C/C++, le temps de lien utilisera le symbole de fonction à localiser.
Objecive-C est différent. Invoquer le sens d'une fonction C pour utiliser la structure de données pour trouver l'adresse. Cela signifie que tout est connu au moment de l'exécution.
Je sais que beaucoup d'autres ont déjà répondu, mais j'ai trouvé qui suit est un simple, mais efficace, simple ligne de réponse. Si elle n'a pas l'air beaucoup mieux que d'autres réponses ici, mais si vous lisez attentivement, il a tout ce que vous devez savoir à propos de la méthode vs fonction.
Une méthode est une fonction qui a un récepteur, en programmation orientée objet, une méthode est une fonction sur une instance d'un objet.
Différence Entre les Méthodes et les Fonctions
De lecture ce doc sur Microsoft
Afin que les méthodes sont le sous-ensemble des fonctions. Chaque méthode est une fonction, mais pas chaque fonction est une méthode, par exemple, un
constructor
ne peut pas être dit comme un méthode mais c'est une fonction.La fonction Une fonction dans un organisme indépendant morceau de code qui comprend un peu de logique et doit être appelée de façon indépendante et sont définis en dehors de la classe.
Méthode, Une méthode est un organisme indépendant morceau de code qui est appelé en référence à un objet et sont être définie à l'intérieur de la classe.
Voici quelques explications pour la méthode contre la fonction à l'aide de JavaScript exemples:
test(20, 50);
est fonction de définir et d'utiliser pour exécuter certaines étapes ou de retour de quelque chose qui peut être stockée ou utilisée de quelque part.var test = something.test();
ici test() peut être une méthode d'un objet ou d'une mesure d'un prototype intégré objets, voici plus d'explication:Intégré propriété/méthode de chaînes de caractères en javascript:
Personnalisé exemple:
Vous pouvez définir les propriétés pour la Chaîne, Tableau, etc ainsi par exemple
JS:
Quelques références: Javascript Méthode De L'Objet, Fonctions, Plus d'infos sur le prototype
En C++, parfois, la méthode utilisée pour rendre compte de la notion de fonction membre d'une classe. Toutefois, récemment, j'ai trouvé une déclaration dans le livre «Le Langage de Programmation C++ 4ème Édition», à la page 586 "les Classes Dérivées"
C'est un peu confus, mais il a dit parfois, donc il est à peu près logique, C++ créateur a tendance à voir les méthodes que les fonctions peuvent être appelées sur les objets et peut se comporter polymorphes.
Une classe est la collecte de certaines données et la fonction en option avec un constructeur.
Pendant que vous la création d'une instance (copie,la réplication) de la classe du constructeur d'initialisation de la classe et de retourner un objet.
Maintenant, la classe deviennent objet (sans constructeur)
&
Les fonctions sont connus comme méthode dans le contexte de l'objet.
Donc, fondamentalement,
Classe <==nouveau==>Objet
Fonction <==nouveau==>la Méthode
En java, il est généralement dit que le constructeur nom de même que le nom de la classe, mais en réalité ce constructeur est comme instance de bloc et bloc statique mais avec un utilisateur de définir le type de retour(c'est à dire le type de Classe)
Tandis que la classe peut avoir un bloc statique,de l'instance de bloc,constructeur, la fonction
L'objet en général, qu'données & méthode.
Ils sont souvent interchangeables, mais un méthode est généralement une fonction d'une classe, et un fonction est souvent en dehors de la classe.
par exemple, en ruby:
En Java, où tout (sauf à forfait et à l'importation des relevés) doit être à l'intérieur de la classe, les gens peuvent toujours se référer à eux comme des "méthodes".