2011-01-30 30 views
47

¿Cuál es la diferencia entre un método y una función? ¿Es que un método devuelve un valor y una función no?¿Cuál es la diferencia entre un método y una función?

+1

Realmente no hay diferencia técnica dentro de php. Pero en mi opinión, una función es una cosa más matemática; no cambia el estado, solo devuelve un valor (como f (x) = 2x).Un método modifica el estado (como la salida de "hello world") y puede devolver un valor. Esto es básicamente una estafa de: http://stackoverflow.com/questions/43777/method-vs-message-vs-function-vs. Sin embargo, eso responde a tu pregunta. – Tyler

+0

La función tiene un significado en la mayoría de los lenguajes de programación sin relación con su significado en matemáticas. –

Respuesta

127

Método es realmente una función usa en el contexto de una clase/objeto.

Cuando se crea una función fuera de una clase/objeto, se le puede llamar una funciónpero cuando se crea una función dentro de una clase, se le puede llamar un método.

class foo { 
    public function bar() { // a method 
    ........ 
    } 
} 

function bar() { // a function not part of an object 
} 

lo tanto, un objeto puede tener métodos (funciones) y propiedades (variables).

+1

es una muy buena respuesta, muy clara. Gracias. – Ben

+4

Los métodos deben llamarse como '$ this-> bar()' si están dentro de esa clase; de ​​lo contrario, primero debe crear una instancia de la clase y luego llamarla usando la instancia de la clase (objeto), así: '$ foo-> bar() '. Para las funciones es simplemente 'bar()'. – knownasilya

+0

Aprendes algo nuevo todos los días. –

0

En una línea, un método es una función pero una función no es necesariamente un método. La diferencia es que un método se usa para describir funciones definidas en clases que se usan con instancias de esas clases.

package {class Example { 
    public function iAmAMethod():void { 
    addEventListener("listenerFunctionIsNotAMethod", function(event:Event):void { 
     trace("inline function, yay!"); 
    }); 
    } 

}

5

La diferencia entre las expresiones "método" y "función" es que un "método" es una función miembro de una clase, mientras que una función independiente no, y una función independiente generalmente existe en el contexto global.

2

Ambos se usan indistintamente, pero la función es la terminología utilizada en los lenguajes estructurales y el método es la terminología utilizada en Langauages ​​orientados a objetos. También existen métodos dentro de los objetos, mientras que las funciones también pueden existir sin objetos.

6

Las palabras no se oponen entre sí, sino que describen dos posibles aspectos de una subrutina. A continuación, se intenta definir las palabras:

Subrutina: Un conjunto de instrucciones que se pueden usar varias veces en el mismo programa.

Función: Una subrutina que devuelve un valor. Derivado de funciones en matemáticas (wikipedia).

Método: Una subrutina que pertenece a un objeto o una clase. Podría ser una función

Tiendo a usar la palabra "función" para cada subrutina que no tiene efectos secundarios pero devuelve un valor claro y la palabra "método" para cada subrutina que tiene un efecto secundario.

+0

Estas son las definiciones de subrutina y función que se usan en Fortran, uno de los primeros idiomas de alto nivel. Eso fue hace mucho tiempo. No puedo pensar en un lenguaje contemporáneo que use "subrutina" como palabra clave. El lenguaje C usó "función" para ambos, y esa es la forma en que la mayoría de los otros idiomas usan la palabra. (Está bien para el método.) –

+0

Pero la pregunta no dice nada sobre palabras clave. Es una pregunta terminológica sobre cómo describir el código en el lenguaje hablado. Puedo recomendar el artículo de Wikipedia http://en.wikipedia.org/wiki/Subroutine – Jonatan

+0

@MarcRochkind No (Visual) Definir funciones básicas usando la palabra clave 'Sub'? – Byson

2

La función es un término genérico que se utilizará en el enfoque de programación procedimental, donde como Método es un término que se utilizará en la aproximación de programación orientada a objetos para definir una propiedad de clase.

1

Definimos método dentro de la clase, definimos funcionan fuera de clase lado, la función no es parte de la clase

Cuestiones relacionadas