Modificador Static
Enviado por zague • 31 de Agosto de 2013 • 1.823 Palabras (8 Páginas) • 281 Visitas
MODIFICADOR STATIC
La palabra reservada static se usa para declarar componentes de clase, así como variable de clase y métodos de clase. La inclusión de la palabra static en la declaración del método main indica que es un método de clase.
No es tan frecuente usar variables de clase y métodos de clase (con excepción del método main)
Un método definido para una clase se llama método de clase y un método definido para un objeto es un método de instancia.
*******
PROPIEDADES Y MÉTODOS DE CLASES Y DE INSTANCIAS
En una clase, las propiedades y los métodos pueden definirse como:
De instancia
De clase
Propiedades de Instancia
Las propiedades de instancia se caracterizan porque cada vez que se define una instancia de la clase, se crean físicamente unas nuevas variables que contendrán los valores de dichas propiedades en la instancia creada, es decir, cada objeto (cada instancia de una clase) contiene sus propios valores en las propiedades de instancia.
Por lo tanto hasta que no se crea una primera instancia de una clase, no existirá ninguna propiedad visible de la clase.
Ejemplo:
class Sencilla {
public int PropiedadDeInstancia;
}
Si ahora se quisiera hacer uso de la propiedad PropiedadDeInstancia a través del nombre de la clase (Sencilla), el compilador marcará un error:
class PruebaSencilla {
public static void main (String [] args) {
Sencilla.PropiedadDeInstancia = 8;
}
}
El compilador indica que la variable PropiedadDeInstancia es “no estática” y que existe un error. Para poder hacer uso de la variable PropiedadDeInstancia, obligatoriamente deberemos crear alguna instancia de la clase.
Class PruebaSencilla {
public static void main (String [] arg) {
Sencilla Instancia1 = new Sencilla();
Sencilla Instancia2 = new Sencilla();
Instancia1.PropiedadDeInstancia = 8;
Instancia2.PropiedadDeInstancia = 5;
}
}
Propiedad de clase
Una propiedad de clase (propiedad estática) se declara con atributo static:
class SencillaEstática {
static public int PropiedadDeClase;
}
A diferencia de las propiedades de instancia, las propiedades de clase existen incluso si no se ha creado ninguna instancia de la clase. Pueden ser referenciadas directamente a través del nombre de la clase, sin tener que utilizar el identificador de ninguna instancia.
Class PruebaSencillaEstatica {
public static void main (String [] arg) {
SencillaEstatica.PropiedadDeClase = 8;
}
}
Las propiedades de clase son compartidas por todas las instancias de la clase. Al crearse una instancia de la clase, no se crean las variables estáticas de la clase. Las variables estáticas (de clase) existen antes de la creación de las instancias de la clase.
Class PruebaSencillaEstatica {
public static void main (String [] arg) {
SencillaEstatica Instancia1 = new SencillaEstatica();
SencillaEstatica Instancia2 = new SencillaEstatica();
SencillaEstatica.PropiedadDeClase = 4;
Instancia1.PropiedadDeClase = 8;
Instancia2.PropiedadDeClase = 5;
}
}
Método de Clase
Un método estático puede ser utilizado sin necesidad de definir previamente instancias de la clase que contiene el método. Los métodos estáticos pueden referenciarse a través del nombre de la clase (al igual que las propiedades estáticas). Esta utilidad es útil en diversas circunstancias:
Cuando el método proporciona una utilidad general:
Esta situación se ha visto con los métodos de la clase Math. Si queremos realizar una raíz cuadrada, no es necesario crear ninguna instancia del método Math; directamente escribimos Math.sqrt(Valor_double). Esto es posible porque el método sqrt de la clase Math es estático.
Cuando el método hace uso de propiedades estáticas u otros métodos estáticos:
Los métodos estáticos referencian propiedades y métodos estáticos.
No es posible hacer referencia a una propiedad de instancia o un método de instancia desde un método estático. Esto es así debido a que en el momento que se ejecuta u método estático puede que no exista ninguna instancia de la clase donde se ejecute la propiedad o el método de instancia al que referencia el método estático
//Ejemplo de metodo de clase
import java.util.*;
public class MetodoNoRetorna {
public static void main(String [] arg) {
Scanner escaner = new Scanner(System.in);
int tabla;
System.out.println("Que tabla deseas? ");
tabla = escaner.nextInt();
//llamada al metodo
MetodoTabla(tabla);
}
//contenido del metodo
public static void MetodoTabla(int t) {
int i,res;
for(i=1;i<=10;i++){
res = i * t;
System.out.println(t+" * "+i+" = "+res); }
}
}
//Programa que llama a un metodo de clase(static) desde otra clase
import java.util.*;
public class PruebaClase {
public static void main(String [] arg) {
Scanner escaner = new Scanner(System.in);
int tabla;
System.out.println("Que tabla quieres imprimir? ");
tabla
...