En este artículo, aprenderemos sobre los métodos estáticos y los métodos de instancia en Java.
Sitios web de películas similares a 123movies.
Métodos de instancia de Java
Los métodos de instancia son métodos que requieren que se cree 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 está definido el método.
public void geek(String name) { // code to be executed.... } // Return type can be int, float String or user defined data type.>
Método de asignación de memoria del caso
Estos métodos en sí se almacenan en el espacio de generación permanente del montón (válido solo hasta Java 7, ahora reemplazado con metaespacio de Java 8 en adelante con eficiencia mejorada), pero los parámetros (argumentos que se les pasan) y sus variables locales y el valor a que se devolverán se asignan en la pila. Se pueden llamar dentro de la misma clase en la que residen o desde las diferentes clases definidas ya sea en el mismo paquete u otros paquetes dependiendo del 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.
- Los métodos de instancia no se almacenan por instancia, incluso con métodos virtuales. Se almacenan en una única ubicación de memoria y solo saben a qué objeto pertenecen porque este puntero se pasa cuando los llamas.
- Se pueden anular ya que se resuelven usando enlace dinámico en tiempo de ejecución.
A continuación se muestra la implementación del acceso al método de instancia:
Java
// Example to illustrate accessing the instance method .> import> java.io.*;> class> Foo {> > String name => ''> ;> > // Instance method to be called within the> > // same class or from a another class defined> > // in the same package or in different package.> > public> void> geek(String name) {> this> .name = name; }> }> class> GFG {> > public> static> void> main(String[] args)> > {> > // create an instance of the class.> > Foo ob => new> Foo();> > // calling an instance method in the class 'Foo'.> > ob.geek(> 'techcodeview.com'> );> > System.out.println(ob.name);> > }> }> |
>
>Producción
techcodeview.com>
Métodos estáticos de Java
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 de métodos estáticos
Se almacenan en el espacio del montón de Generación Permanente ya que están asociados con la clase en la que residen, no con 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, se les puede llamar sin crear el objeto de la clase.
Puntos importantes:
- Los métodos estáticos están asociados con la clase en la que residen, es decir, se llaman sin crear una instancia de la clase, es decir Nombre de clase.nombre de método (argumentos) .
- 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, ya que se resuelven usando enlace estático por el compilador en el momento de la compilación. Sin embargo, podemos tener métodos declarados con el mismo nombre. estático en ambos superclase y subclase , pero se llamará Método de ocultación ya que el método de clase derivada ocultará el método de clase base.
A continuación se muestra la ilustración del acceso a los métodos estáticos:
Java
// Example to illustrate Accessing> // the Static method(s) of the class.> 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)> > {> > // Accessing the static method geek()> > // and field by class name itself.> > Geek.geek(> 'vaibhav'> );> > System.out.println(Geek.geekName);> > // Accessing the static method geek()> > // by using Object's reference.> > Geek obj => new> Geek();> > obj.geek(> 'mohit'> );> > System.out.println(obj.geekName);> > }> }> |
>
atrapar y probar java
>Producción
vaibhav mohit>
Nota:
Las variables estáticas y sus valores (primitivos o referencias) definidos en la clase se almacenan en Generación permanente espacio de la memoria.
Preguntas frecuentes
1. ¿Qué pasa si una 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 objeto de referencia se almacenaría en la sección PermGen y el objeto al que hace referencia se almacenaría en la sección del montón.
2. ¿Cuándo utilizar métodos estáticos?
- Cuando tenga código que pueda compartirse entre todas las instancias de la misma clase, coloque esa parte del código en un método estático.
- Básicamente se utilizan para acceder a campos estáticos de la clase.
3. Diferencia entre el método de instancia y el método estático
- El método de instancia puede acceder directamente a los métodos de instancia y a las variables de instancia.
- El método de instancia puede acceder directamente a variables estáticas y métodos estáticos.
- 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 a métodos de instancia ni a variables de instancia directamente. Deben utilizar referencia al objeto. Y el método estático no se puede utilizar. este palabra clave ya que no existe una instancia para hacer referencia a 'esto'.