Método de instancia

Los métodos de instancia son métodos que requieren la creación de un objeto de su clase antes de poder llamarlo. Para invocar un método de instancia, tenemos que crear un Objeto de la clase en la que se definió.

public void geek(String name)
{
 // code to be executed....
}
// Return type can be int, float String or user defined data type.

Asignación de memoria: Estos métodos en sí mismos se almacenan en el espacio de generación permanente del montón, pero los parámetros (argumentos que se les pasan) y sus variables locales y el valor a devolver se asignan en la pila. Se pueden llamar dentro de la misma clase en la que residen o desde las diferentes clases definidas en el mismo paquete u otros paquetes dependen de la Tipo de acceso proporcionado al método de instancia deseado.

Puntos importantes:

  • Los métodos de instancia pertenecen al objeto de la clase, no a la clase, es decir, se pueden llamar después de crear el objeto de la clase.
  • Cada Objeto individual creado a partir de la clase tiene su propia copia de los métodos de instancia de esa clase.
  • Se pueden anular ya que se resuelven usando enlace dinámico en tiempo de ejecución.

import java.io.*;

 

class Foo{

     

    String name = "";

     

    

    

    

    public void geek(String name){

         

        this.name = name;

    }

}

 

class GFG {

    public static void main (String[] args) {

     

        

        Foo ob = new Foo();

          

        

        ob.geek("GeeksforGeeks");

        System.out.println(ob.name);

    }

}

Producción :

GeeksforGeeks

Método estático

Los métodos estáticos son los métodos en Java que se pueden llamar sin crear un objeto de clase. Están referenciados por el nombre de clase en sí o referencia al Objeto de esa clase.

public static void geek(String name)
{
 // code to be executed....
}

// Must have static modifier in their declaration.
// Return type can be int, float, String or user defined data type.

Asignación de memoria: Se almacenan en el espacio de pila de generación permanente, ya que están asociados a la clase en la que residen, no a los objetos de esa clase. Pero sus variables locales y los argumentos que se les pasan se almacenan en la pila. Dado que pertenecen a la clase, pueden ser llamados sin crear el objeto de la clase.

Puntos importantes:

  • Los métodos estáticos están asociados a la clase en la que residen, es decir, se pueden llamar incluso sin crear una instancia de la clase, es decir, ClassName.methodName (args).
  • Están diseñados con el objetivo de ser compartidos entre todos los Objetos creados a partir de la misma clase.
  • Los métodos estáticos no se pueden anular. Pero pueden sobrecargarse ya que se resuelven usando enlace estático por el compilador en tiempo de compilación.

import java.io.*;

 

class Geek{

     

    public static String geekName = "";

     

    public static void geek(String name){

         

        geekName = name;

    }

}

 

class GFG {

    public static void main (String[] args) {

         

        

        

        Geek.geek("vaibhav"); 

        System.out.println(Geek.geekName);

        

        

        Geek obj = new Geek();

        obj.geek("mohit");

        System.out.println(obj.geekName);   

         

        

    }

}

Producción:

vaibhav
mohit

Nota: Las variables estáticas y sus valores (primitivas o referencias) definidas en la clase se almacenan en PermGen espacio de memoria.
¿Qué pasa si la variable estática se refiere a un objeto?

static int i = 1;
static Object obj = new Object();

En la primera línea, el valor 1 se almacenaría en la sección PermGen. En la segunda línea, el obj de referencia se almacenaría en la sección PermGen y el objeto al que se refiere se almacenaría en la sección del montón.

¿Cuándo usar métodos estáticos?

  • Cuando tenga un código que se pueda compartir en todas las instancias de la misma clase, coloque esa parte del código en el método estático.
  • Básicamente se utilizan para acceder a los campos estáticos de la clase.

Método de instancia vs método estático

  • El método de instancia puede acceder a los métodos de instancia y las variables de instancia directamente.
  • El método de instancia puede acceder a variables estáticas y métodos estáticos directamente.
  • Los métodos estáticos pueden acceder directamente a las variables estáticas y a los métodos estáticos.
  • Los métodos estáticos no pueden acceder directamente a los métodos de instancia y a las variables de instancia. Deben usar una referencia al objeto. Y el método estático no puede usar esta palabra clave, ya que no hay ninguna instancia para que ‘esto’ se refiera.

Referencias

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema discutido anteriormente.

Deja una respuesta

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