¿Cuál es la diferencia entre un método y una función?
¿ Alguien puede proporcionar una explicación sencilla de los métodos frente a las funciones en el contexto de la programación orientada a objetos?
Una función es un fragmento de código que se llama por su nombre. Se le pueden pasar datos para operar (es decir, los parámetros) y, opcionalmente, puede devolver datos (el valor de retorno). Todos los datos que se pasan a una función se pasan explícitamente.
Un método es un fragmento de código llamado por un nombre asociado con un objeto. En la mayoría de los aspectos es idéntico a una función excepto por dos diferencias clave:
- A un método se le pasa implícitamente el objeto en el que fue llamado.
- Un método puede operar con datos contenidos dentro de la clase (recordando que un objeto es una instancia de una clase; la clase es la definición, el objeto es una instancia de esos datos).
(esta es una explicación simplificada, ignorando cuestiones de alcance , etc.)
Un método está en un objeto o es estático en una clase.
Una función es independiente de cualquier objeto (y fuera de cualquier clase).
Para Java y C#, sólo existen métodos.
Para C, sólo hay funciones.
Para C++ y Python dependerá de si estás o no en una clase.
Pero en inglés básico:
- Función : Característica o funcionalidad independiente.
- Método : Una forma de hacer algo, que tiene diferentes enfoques o métodos, pero relacionados con el mismo aspecto (también conocido como clase).