Saltar al contenido

Diferencia entre métodos estáticos y métodos de instancia

La guía paso a paso o código que hallarás en este artículo es la solución más eficiente y válida que encontramos a tus dudas o dilema.

Solución:

El paradigma básico en Java es que escribes clases y que esas clases son instanciadas. Los objetos instanciados (una instancia de una clase) tienen attributes asociados con ellos (variables miembro) que afectan su comportamiento; cuando la instancia tenga su método ejecutado, se referirá a estas variables.

Sin embargo, todos los objetos de un tipo particular pueden tener un comportamiento que no depende en absoluto de las variables miembro; estos métodos se hacen mejor static. Por ser staticno se requiere ninguna instancia de la clase para ejecutar el método.

Puede hacer esto para ejecutar un static método:

MyClass.staticMethod();  // Simply refers to the class's static code

Pero para ejecutar un no-static método, usted debe hacer esto:

MyClass obj = new MyClass();//Create an instance
obj.nonstaticMethod();  // Refer to the instance's class's code

En un nivel más profundo, el compilador, cuando reúne una clase, recopila punteros a métodos y los adjunta a la clase. Cuando se ejecutan esos métodos, sigue los punteros y ejecuta el código en el otro extremo. Si se crea una instancia de una clase, el objeto creado contiene un puntero a la “tabla de métodos virtuales”, que apunta a los métodos que se llamarán para esa clase en particular en la jerarquía de herencia. Sin embargo, si el método es static, no se necesita una “tabla de método virtual”: todas las llamadas a ese método van exactamente al mismo lugar en la memoria para ejecutar exactamente el mismo código. Por eso, en sistemas de alto rendimiento es mejor utilizar un static método si no depende de las variables de instancia.

Métodos y variables que no se declaran como static se conocen como métodos de instancia y variables de instancia. Para hacer referencia a métodos y variables de instancia, primero debe instanciar la clase, lo que significa que primero debe crear un objeto de esa clase. static no necesita instanciar la clase puede acceder a los métodos y variables con el nombre de la clase usando el signo de punto que está en (.)

por ejemplo:

Person.staticMethod();           //accessing static method.

para no-static método debe instanciar la clase.

Person person1 = new Person();   //instantiating
person1.nonStaticMethod();       //accessing non-static method.

Métodos estáticos, las variables pertenecen a toda la clase, no solo a una instancia de objeto. A static método, la variable está asociada con la clase como un todo en lugar de instancias específicas de una clase. Cada objeto compartirá una copia común del static métodos, variables. Solo hay una copia por clase, sin importar cuántos objetos se creen a partir de ella.

Comentarios y puntuaciones

Tienes la posibilidad dar visibilidad a este enunciado si te valió la pena.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *