Pregunta

    

Esta pregunta ya tiene una respuesta aquí:

         

Ligeramente relacionado con mi otra pregunta : ¿Cuál es la diferencia entre lo siguiente:

private class Joe
protected class Joe
public class Joe
class Joe

Una vez más, la diferencia entre los últimos 2 es lo que más me interesa.

¿Fue útil?

Solución

Una clase pública es accesible a una clase en cualquier paquete.

Una clase con acceso predeterminado ( class Joe ) solo es visible para otras clases en el mismo paquete.

Los modificadores privados y protegidos solo se pueden aplicar a clases internas.

Una clase privada solo es visible para su clase de cierre y otras clases internas en la misma clase de cierre.

Una clase protegida es visible para otras clases en el mismo paquete y para las clases que extienden la clase adjunta.

Otros consejos

  • privado: visible solo para clases externas
  • protegido: visible solo para clases externas
  • public: visible para todas las demás clases
  • clase: paquete privado, tan visible para las clases dentro del mismo paquete

Consulte JLS para obtener más información .

Una clase con acceso predeterminado no tiene ningún modificador que lo preceda en la declaración.

El acceso predeterminado es un acceso a nivel de paquete, porque una clase con acceso predeterminado solo puede ser vista por clases dentro del mismo paquete.

Si una clase tiene acceso predeterminado, una clase en otro paquete no podrá crear una instancia de esa clase, o incluso declarar una variable o tipo de retorno . El compilador se quejará. Por ejemplo:

package humanity;
class Person {}

package family;
import humanity.Person;
class Child extends Person {}

Intente compilar estas 2 fuentes. Como puede ver, están en diferentes paquetes y la compilación fallará.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top