usar una son qué métodos modificador metodos metodo los instanciar estáticos estaticos estatica cuando clase oop static-methods static-variables

oop - una - qué son los métodos estáticos



¿Cuándo debería usar métodos estáticos en una clase y cuáles son los beneficios? (10)

Esencialmente, los métodos estáticos le permiten escribir código de procedimiento en un lenguaje orientado a objetos. Le permite llamar a métodos sin tener que crear un objeto primero.

Tengo un concepto de variables estáticas pero cuáles son los beneficios de los métodos estáticos en una clase. He trabajado en algunos proyectos pero no establecí un método estático. Cada vez que necesito llamar a un método de una clase, creo un objeto de esa clase y llamo al método deseado.

P: La variable estática en un método mantiene su valor incluso cuando se ejecuta el método, pero solo se puede acceder a él en su método contenedor, pero ¿cuál es la mejor definición de método estático?

P: ¿Llamar al método estático sin crear un objeto de esa clase es el único beneficio del método estático?

P: ¿Cuál es el rango accesible para el método estático?

Gracias


La única vez que desea utilizar un método estático en una clase es cuando un método determinado no requiere la creación de una instancia de una clase. Esto podría ser al intentar devolver una fuente de datos compartida (por ejemplo, un Singleton) o realizar una operación que no modifique el estado interno del objeto (String.format, por ejemplo).

Esta entrada de wikipedia explica bastante bien los métodos estáticos: http://en.wikipedia.org/wiki/Method_(computer_science)#Static_methods


La variable estática se usa cuando desea compartir información entre diferentes objetos de la clase. A medida que se comparte la variable, cada objeto puede actualizarla y el valor actualizado también estará disponible para todos los demás objetos. Como la variable estática se puede compartir, a menudo se llaman como variable de clase.


Las variables estáticas y los métodos estáticos están vinculados a la clase, y no a una instancia de la clase.

Los métodos estáticos no deben contener un "estado". Cualquier cosa relacionada con un estado, debe estar vinculada a un objeto instanciado, y no a la clase.


Los métodos estáticos no pasan un puntero "this" a un objeto, por lo que no pueden hacer referencia a variables o métodos no estáticos, pero en consecuencia pueden ser más eficientes en el tiempo de ejecución (menos parámetros y sin sobrecarga para crear y destruir un objeto).

Se pueden usar para agrupar métodos cohesivos en una sola clase o para actuar sobre objetos de su clase, como en el patrón de fábrica.


Sintaxis (php) para métodos estáticos:

<?php class Number { public static function multiply($a, $b) { return $a * $b; } } ?>

Codigo del cliente:

echo Number::multiply(1, 2);

Lo cual tiene más sentido que:

$number = new Number(); echo $number->multiply(1, 2);

Como el método de multiply() no utiliza ninguna variable de clase y, como tal, no requiere una instancia de Number .


Su descripción de una variable estática es más adecuada a la que se encuentra en C. El concepto de una variable estática en términos orientados a objetos es conceptualmente diferente. Estoy extrayendo de la experiencia de Java aquí. Los métodos y campos estáticos son útiles cuando conceptualmente no pertenecen a una instancia de algo.

Considere una clase de Matemáticas que contenga algunos valores comunes como Pi o e, y algunas funciones útiles como sin y cos. Realmente no tiene sentido crear instancias separadas para usar este tipo de funcionalidad, por lo tanto, son mejores como estáticas:

// This makes little sense Math m = new Math(); float answer = m.sin(45); // This would make more sense float answer = Math.sin(45);

En las lenguas OO (de nuevo, desde una perspectiva Java), las funciones, o más conocidas como métodos, no pueden tener variables locales estáticas. Solo las clases pueden tener miembros estáticos, que como he dicho, se parecen poco a la idea de la estática en C.



los elementos estáticos son accesibles desde cualquier contexto (es decir, en cualquier lugar de su secuencia de comandos), por lo que puede acceder a estos métodos sin necesidad de pasar una instancia de la clase de un objeto a otro.

Los elementos estáticos están disponibles en cada instancia de una clase, por lo que puede establecer los valores que desea que estén disponibles para todos los miembros de un tipo.

para leer más un enlace !