publico protegido privado poo modificadores incluidos ejemplos definicion acceso java protected access-modifiers

java - privado - ¿Qué significa el modificador protegido?



static en java (6)

Estoy leyendo el libro The Java Programming Language, 3ra edición .

En el capítulo 3.5, ilustra el modificador protected con las siguientes palabras:

Más precisamente, más allá de ser accesible dentro de la propia clase y para codificar dentro del mismo paquete, también se puede acceder a un miembro protegido desde una clase a través de referencias de objetos que son al menos del mismo tipo que la clase que es, referencias del tipo de clase o uno de sus subtipos.

Las palabras me confunden, en dos aspectos:

1. ¿ Se puede acceder al miembro protegido por código dentro del mismo paquete? Lo que sabía antes es miembro protegido solo se puede acceder por la subclase ...

2. No entiendo de qué a protected member can also be accessed from ... quiere decir que alguien me puede explicar por favor?


No entiendo de qué se puede acceder a un miembro protegido desde ... ¿quiere decir que alguien me puede explicar por favor?

Por ejemplo, tienes un objeto A y un objeto B, ambos de la misma clase. El objeto A podrá consultar las propiedades y los métodos protegidos del objeto B si tiene una referencia a él. El modificador protegido se aplica a nivel de clase, no a nivel de objeto. Esto puede ser útil en algunas situaciones.


  1. Sí, se puede acceder a los miembros protected desde la propia clase, subclases de la clase y también a todas las clases en el mismo paquete de la clase (no importa si son subclases o no). Si no sabías la última parte antes, entonces acabas de aprender algo nuevo.

  2. Simplemente significa que puedes usar esos miembros; si un miembro no está accesible, significa que obtendrá un error de compilación cuando intente usarlo.


1) Sí, a los miembros protegidos se puede acceder por clases desde el mismo paquete. Así es como funciona Java.

2) Eso significa que las subclases pueden acceder a ellas.


Aquí están las respuestas

  1. Sí. Se puede acceder a los miembros protegidos (variables y métodos de instancia) de una clase por otras clases dentro del mismo paquete, así como por cualquier otra clase que extienda esta clase que contiene el miembro al que se tiene acceso. En la misma especificación, también han proporcionado la tabla donde el nivel de acceso está aumentando estrictamente, proporcionando todos los accesos permitidos en el nivel anterior: privado -> paquete -> protegido -> público

  2. Como miembros protegidos (variables de instancia / estados y métodos / comportamientos) de una clase X se heredan y son visibles como parte de las subclases de X, digamos Y1, Y2, Y3 y pueden estar más abajo en los siguientes niveles, cualquier referencia de objeto de el tipo X o Y1, Y2, y3 se puede usar para acceder a ese miembro protegido.


En Java, protected significa que se puede acceder al miembro por cualquier clase en el mismo paquete y por subclases, incluso si están en otros paquetes.

Nota

A protected variable is not visible outside the package

por ejemplo, B extiende A y A tiene un int x protegido; se puede usar dentro de la clase B. Pero no se puede acceder usando su variable de instancia


Solo piénsalo como entre público y privado. Puedes acceder a todo desde clases públicas, y menos desde clases privadas.