miércoles, 5 de agosto de 2009

Pregunta simple ...

Bueno, llevaba algunos meses alejada de este blog; pero ahora he regresado para mantenerlo como se debe; así es que sin más preambulos, vamos con la primera pregunta.

Mire
n este simple ejemplo ... la pregunta de siempre es si compilará o no y en caso de que la respuesta sea negativa, entonces cuáles son las causas de los errores. Para algunos la respuesta puede resultar muy, pero muy obvia, pero lo importante como siempre es saber justificar la respuesta.

Analizando el código tenemos:

La clase A se encuentra definida dentro de un package llamado "certification" y la clase tiene una visibildad por 'default' que es distinta a la visibilidad 'public'. Esa clase compila sin ningún problema.

Luego en la clase B se importa la clase A desde su package y se define la clase B como una sub-clase de A ... pero acá está el problema, al tratar de compilar nos encontramos con que no se puede tener acceso a la clase A (aunque la hayamos importado) porque la visibilidad de la clase A es por default, es decir, a nivel de package ... y la clase B se encuentra en otro package, por lo tanto, no tiene acceso a la clase A.

La pregunta ahora es: ¿cómo se puede solucionar el problema?

Entonces, qué podemos decir ahora si intentamos con el siguiente código:

La clase C importa a la clase A, pero la va a utilizar sólo para crear objetos de esa clase, ¿será válido el acceso ahora?

La respuesta sigue siendo la misma ... no se puede acceder a la clase A, la clase C está definida dentro de un package distinto y la clase A tiene acceso por default.

Qué es lo relevante de estos simples ejemplos es la visibilidad de las clases, muchas veces me he encontrado con personas que piensan que el no incluir una visibilidad a la clase se asume que es público, pero NOOOOO, no es lo mismo. Sin embargo, hay una excepción a esa regla y tiene que ver con las interfaces ... pero eso lo dejaré para un próximo post.

Bueno, eso es todo por ahora, un abrazo a todos los que pasan por acá.

Saludos

1 comentario:

  1. bueno, no entendí nada pero si te diré que eso de la "diferencia de clases" no va conmigo, je. es broma.
    es muy interesante tu rinconcito.
    amenazo volver.

    ResponderEliminar