INGENIERIA DE SISTEMAS MÉTODOS Y ATRIBUTOS ESTÁTICOS (static) La palabra static se utiliza para definir atributos (variables) y funciones (métodos) estáticos, la particularidad de estos miembros estáticos es que se pueden acceder a ellos sin necesidad de instanciar la clase (sin necesidad de crear un objeto de la clase), como ejemplo tenemos las funciones de la clase Math (pow, sin, random, etc.) j=Math.pow(2,3); Como se puede observar se puede acceder a la función pow de la clase Math, y no fue necesario crear un objeto de la clase Math para poder acceder a la función pow Ejemplo de una FUNCIÓN ESTÁTICA La clase matematica tiene una función sumar que es estática class Matematica { static int sumar(int a,int b) { return (a+b); } } class Principal_matematica { public static void main(String args[]) { int a=5; int b=7; int c=Matematica.sumar(a,b); función estática Se puede usar la función sumar de la clase Matematica aunque no se haya creado un objeto de la misma, debido a que esta función es estática System.out.println(c); } } Nota. Un caso especial de función estática es la función main, se trata de una función estática porque debe ser utilizada sin crear objetos de su clase. VARIABLES ESTÁTICAS Una variable estática no se asocia a un objeto, sino que se asocia a la clase misma; no hay copia del dato para cada objeto sino una sola copia que es compartida por todos los objetos de la clase. A las variables estáticas se les llama a veces “variables de clase”, por contraposición a las variables no estáticas que se les llama “variables de objeto”. Ejemplo La clase punto contiene dos variables de tipo entero (x,y), y una variable también de tipo entero pero esta variable es estática. class Punto { int x,y; static int cant=0; public punto(int a,int b) { x=a; y=b; cant++; } variable estática Al momento de crear un objeto de la clase Punto, el constructor aumenta la variable estática cant en uno. } class Principal_punto { public static void main(String args[]) { Al crear el objeto p1, la variable cant aumenta en uno; canr=1 Punto p1=new Punto(5,0); Punto p2=new Punto(2,12); Punto p3=new Punto(1,10); System.out.println(p1.cant); System.out.println(p2.cant); System.out.println(punto.cant); } } Al crear el objeto p2, la variable cant aumenta en uno; cant=2 Al crear el objeto p3, la variable cant aumenta en uno; cant =3 Imprime 3, porque cant es variable estática Imprime 3, porque cant es variable estática Imprime 3. Tambien se puede acceder a una variable estática sin haber creado una instancia de clase.