Foros del Web » Programación para mayores de 30 ;) » Java »

duda sobre public class

Estas en el tema de duda sobre public class en el foro de Java en Foros del Web. Hola gente! Llevo mucho tiempo ultilizando este foro pero nunca tuve la necesidad de registrarme ya que todas mis dudas las encontraba o buscando por ...
  #1 (permalink)  
Antiguo 17/08/2009, 16:55
 
Fecha de Ingreso: agosto-2009
Mensajes: 4
Antigüedad: 14 años, 8 meses
Puntos: 0
duda sobre public class

Hola gente!

Llevo mucho tiempo ultilizando este foro pero nunca tuve la necesidad de registrarme ya que todas mis dudas las encontraba o buscando por internet o en este foro que alguien le había pasado anteriormente... pero hay una pregunta que no se encontrarle respuesta...

porque la clase que tiene el metodo Main dicen que ha de ser publica??

muchos manuales y personas lo dicen pero si no pones el atributo public funciona igual... pero también mucha gente incluso manuales no veo que lo pongan... alguna idea? :D

Simplemente es que soy muy curioso... y me gusta saber todo porque se hace... y no veo motivo esta vez...

(Supongo que es el mismo motivo que el public del main... pero si el main no es public no se puede ejecutar el programa... te avisa que no es public y en cambio en la clase no... como si no fuera necesario que fuera pública...)

Última edición por idroj; 17/08/2009 a las 17:10
  #2 (permalink)  
Antiguo 17/08/2009, 17:48
 
Fecha de Ingreso: junio-2009
Mensajes: 59
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: duda sobre public class

Creo que aunque no pongas public al igual que una variable...por defecto en java son public.
  #3 (permalink)  
Antiguo 18/08/2009, 03:59
 
Fecha de Ingreso: agosto-2009
Mensajes: 4
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: duda sobre public class

Cita:
Iniciado por Zidek Ver Mensaje
Creo que aunque no pongas public al igual que una variable...por defecto en java son public.
Bueno yo tenia entendido que habia 4 tipos de modificadores.

Public, private, protected y el por defecto.

Public -> Accesible por todos.
private -> Accesible desde la propia clase
protected -> Accesible desde las clases del mismo package o subclases (sean o no del mismo packete).
sin modificador -> Accesible desde cualquier clase del mismo package.

Esto por supuesto para metodos y variables... por clases tan solo se puede sin modificador o public.
  #4 (permalink)  
Antiguo 18/08/2009, 04:32
 
Fecha de Ingreso: junio-2009
Mensajes: 59
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: duda sobre public class

Y sin modificador en clases tengo entendido que tb es public... no estoy seguro añl 100%
  #5 (permalink)  
Antiguo 18/08/2009, 04:42
 
Fecha de Ingreso: agosto-2009
Mensajes: 4
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: duda sobre public class

Cita:
Iniciado por Zidek Ver Mensaje
Y sin modificador en clases tengo entendido que tb es public... no estoy seguro añl 100%
Lo prové y no es así... porque si luego intento acceder desde una clase fuera del package si fuera public podria acceder y me lanza un error que no puede acceder...
  #6 (permalink)  
Antiguo 18/08/2009, 05:42
 
Fecha de Ingreso: junio-2009
Mensajes: 59
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: duda sobre public class

entonces tiene q ser protected, pero tiene que ser algo. Lo que demostraria que no es public que es tu pregunta original. Siento no haberte podido ayudar al 100%. Esperemos que algún entendido te pueda aclarar el por qué
  #7 (permalink)  
Antiguo 18/08/2009, 06:24
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: duda sobre public class

En efecto, si omites el elemento public del main(), por defecto funciona como protected, es decir, solo visible desde el resto de clases del package que contiene a la clase donde está ese main().

Tú mismo debes decidir en función de las necesidades de la aplicación desde donde quieres que se vea el main(), de donde inferirás si usas public para definirlo o si lo omites.

Lo importante es el static void del método main(String[] args) para indicar que es un método iniciador de clase, es decir, inicia la clase sin necesidad de crear ninguna instancia (objeto) de la misma, y que no devuelve nada (y que no es necesario enviarle argumentos de ningún tipo).
  #8 (permalink)  
Antiguo 18/08/2009, 06:52
 
Fecha de Ingreso: agosto-2009
Mensajes: 4
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: duda sobre public class

Cita:
Iniciado por Fuzzylog Ver Mensaje
En efecto, si omites el elemento public del main(), por defecto funciona como protected, es decir, solo visible desde el resto de clases del package que contiene a la clase donde está ese main().

Tú mismo debes decidir en función de las necesidades de la aplicación desde donde quieres que se vea el main(), de donde inferirás si usas public para definirlo o si lo omites.

Lo importante es el static void del método main(String[] args) para indicar que es un método iniciador de clase, es decir, inicia la clase sin necesidad de crear ninguna instancia (objeto) de la misma, y que no devuelve nada (y que no es necesario enviarle argumentos de ningún tipo).
Pero a mi me obliga que el método main(String[] args) sea siempre public porque sino, no funciona... en cambio la clase que tiene el miembro main dicen (manuales y gente, no todos por eso) que tiene que ser publica... cuando si la pones sin modificador funciona perfectamente. Y lo que no entiendo es porque dicen que tiene que ser pública si funciona igual...

PD: Gracias Zidek i Fuzzylog por el interés
  #9 (permalink)  
Antiguo 19/08/2009, 06:30
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: duda sobre public class

Como te he dicho el poner public o no poner nada para el método main() es opcional pero funcionan diferente.

Si tú metes tu clase con tu main() en un paquete de clases, si el main es public puedes acceder desde cualquier clase java con tal de que importes el paquete de clases correspondiente. Si no pones nada se convierte en protected y solo puedes acceder desde otras clases del mismo paquete.

Es como decir, publicas en un tablón de anuncios de un colegio que Fulanito está en 3ºA. Todos los que entran lo saben y pueden buscarlo ahí. Si no publicas nada solo los otros miembros de 3ºA saben que está allí y pueden buscarlo.

Ahora bien, si no está en ningún paquete de clases (package), debe ser siempre public, pq. si no lleva nada, como protected que es no hay madre que lo reconozca.

Ahora imagínate que estás en un bosque, si a la entrada hay un registro para los que entran y salen sabes que fulanito ha entrado y anda por allí, pero si no hay nada, por mucho que tú estés en ese bosque, te encuentras a alguien que no sabes quien demonios es y no puedes preguntarle si es fulanito por que no conoces quien es fulanito.

Esto me ha quedado un poco basto, así que igual conviene matizar.

Realmente las personas pueden preguntar y responder. Las clases java no funcionan de la misma manera. Lo que ocurre es que si es protected solo se "VE" si la clase se halla en el mismo paquete, como si todos los integrantes del paquete llevasen unas gafas especiales que les permitiesen unicamente a ellos conocer los nombres de los otros elementos... para que quede algo más claro.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:22.