{"id":3344,"date":"2018-06-16T22:10:39","date_gmt":"2018-06-17T03:10:39","guid":{"rendered":"https:\/\/www.manualjava.net\/?p=3344"},"modified":"2018-06-17T13:00:24","modified_gmt":"2018-06-17T18:00:24","slug":"miembros-static-de-una-clase","status":"publish","type":"post","link":"https:\/\/www.manualjava.net\/?p=3344","title":{"rendered":"Miembros static de una clase"},"content":{"rendered":"<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-3346\" src=\"https:\/\/www.manualjava.net\/wp-content\/uploads\/2018\/06\/java60-300x83.jpg\" alt=\"\" width=\"281\" height=\"78\" srcset=\"https:\/\/www.manualjava.net\/wp-content\/uploads\/2018\/06\/java60-300x83.jpg 300w, https:\/\/www.manualjava.net\/wp-content\/uploads\/2018\/06\/java60.jpg 387w\" sizes=\"(max-width: 281px) 100vw, 281px\" \/><\/p>\n<p><span style=\"color: #000000;\">Cada instancia de una clase, cada objeto, tiene su propia copia de las variables de la clase. Cuando interese que haya miembros que no est\u00e9n ligados a los objetos sino a la clase, y por lo tanto comunes a todos los objetos, estos se declaran\u00a0<strong>static.\u00a0<\/strong><\/span><br \/>\n<!--more--><\/p>\n<h2><span style=\"color: #000000;\"><strong>Variables static<\/strong><\/span><\/h2>\n<p><span style=\"color: #000000;\">Las variables de clase static son compartidas por todos los objetos de la clase. Se declaran de igual manera que otra variable, a\u00f1adiendo como prefijo la palabra reservada static.<\/span><\/p>\n<h3><strong><span style=\"color: #000000;\">Ejemplo<\/span><\/strong><\/h3>\n<p><span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0public class Conjunto {<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 private static int k=0;<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 static Totem lista = null;<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \/\/ . . .<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0}<\/span><\/p>\n<p><span style=\"color: #000000;\">Las variables miembro static no forman parte de los objetos de la clase sino de la propia clase. Dentro de las clases se accede a ellas de la manera habitual, simplemente con su nombre. Desde fuera de la clase se accede con el nombre de la clase, el selector y el nombre de la variable:<\/span><\/p>\n<p><span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0Conjunto.lista = . . . ;<\/span><\/p>\n<p><span style=\"color: #000000;\">Tambi\u00e9n se puede acceder a trav\u00e9s de un objeto de la clase, aunque no es recomendable ya que los miembros static no pertenecen a los objetos sino a las clases.<\/span><\/p>\n<h2><span style=\"color: #000000;\"><strong>M\u00e9todos static<\/strong><\/span><\/h2>\n<p><span style=\"color: #000000;\">Los m\u00e9todos de las clases se llaman a trav\u00e9s de los objetos. En ocasiones interesa definir m\u00e9todos que est\u00e9n controlados por la clase, que no haga falta crear un objeto para llamarlos; son los m\u00e9todos static. Muchos m\u00e9todos de la biblioteca Java est\u00e1n definidos como static. Es, por ejemplo, el caso de los m\u00e9todos matem\u00e1ticos de la clase\u00a0<strong>Math: Math.sin(), Math.sqrt().<\/strong><\/span><\/p>\n<p><span style=\"color: #000000;\">La llamada a los m\u00e9todos static se realiza a trav\u00e9s de la clase: NombreClase.metodo(), respetando las reglas de visibilidad. Tambi\u00e9n se pueden llamar con un objeto de la clase, aunque no es recomendable debido a que son m\u00e9todos dependientes de la clase y no de los objetos.<\/span><\/p>\n<p><span style=\"color: #000000;\">Los m\u00e9todos definidos como static no tienen asignada la referencia this, por ello solo pueden acceder a miembros static de la clase. Es un error que un m\u00e9todo static acceda a miembros de la clase no static.<\/span><\/p>\n<h3><span style=\"color: #000000;\"><strong>Ejemplo<\/strong><\/span><\/h3>\n<p><span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0public class Fiesta {<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 int precio;<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 String cartel;<\/span><\/p>\n<p><span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 public static void main(String[] args){<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0cartel = \u00abRosa de Guadalupe\u00bb;<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0precio = 1;<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 }<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0}<\/span><\/p>\n<p><span style=\"color: #000000;\">al compilar da dos errores debido a que desde el m\u00e9todo main(), definido como static se accede a miembros no static.<\/span><\/p>\n<h3><span style=\"color: #000000;\"><strong>Ejemplo<\/strong><\/span><\/h3>\n<p><span style=\"color: #000000;\">La clase SumaSerie define tres variables static, y un m\u00e9todo static que calcula la suma cada vez que se llama.<\/span><\/p>\n<p><span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0public class SumaSerie {<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 private static long n;<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 private static long m;<\/span><\/p>\n<p><span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 static{<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0n = 0;<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0m = 1;<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 }<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 public static long suma(){<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0m = m+n;<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0n = m-n;<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 }<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0}<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Cada instancia de una clase, cada objeto, tiene su propia copia de las variables de la clase. Cuando interese que haya miembros que no est\u00e9n ligados a los objetos sino a la clase, y por lo tanto comunes a todos los objetos, estos se declaran\u00a0static.\u00a0<\/p><p><a class=\"more-link btn\" href=\"https:\/\/www.manualjava.net\/?p=3344\">Seguir leyendo<\/a><\/p>\n","protected":false},"author":1,"featured_media":3346,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12],"tags":[],"_links":{"self":[{"href":"https:\/\/www.manualjava.net\/index.php?rest_route=\/wp\/v2\/posts\/3344"}],"collection":[{"href":"https:\/\/www.manualjava.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.manualjava.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.manualjava.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.manualjava.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3344"}],"version-history":[{"count":17,"href":"https:\/\/www.manualjava.net\/index.php?rest_route=\/wp\/v2\/posts\/3344\/revisions"}],"predecessor-version":[{"id":3362,"href":"https:\/\/www.manualjava.net\/index.php?rest_route=\/wp\/v2\/posts\/3344\/revisions\/3362"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.manualjava.net\/index.php?rest_route=\/wp\/v2\/media\/3346"}],"wp:attachment":[{"href":"https:\/\/www.manualjava.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3344"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.manualjava.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3344"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.manualjava.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3344"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}