mediante las opciones de línea de comandos
-classpath
o
-cp
, seguidas de una lista de directorios o archivos de
fi cheros separados por signos de punto y coma (
;
) en Microsoft Windows, o signos de dos puntos (
:
) en UNIX/
Linux/Mac OS X. De nuevo, si las clases deben cargarse del directorio actual, asegúrese de incluir un punto (
.
)
en la ruta de clases para especifi car el directorio actual.
8.17 Acceso a paquetes
Si no se especifi ca un modifi cador de acceso (
public
,
protected
o
private
; hablaremos sobre
protected
en
el capítulo 9) para un método o variable al declararse en una clase, se considerará que el método o variable tiene
acceso a nivel de paquete
. En un programa que consiste de una declaración de clase, esto no tiene un efecto
específi co. No obstante, si un programa utiliza varias clases del mismo paquete (es decir, un grupo de clases rela-
cionadas), éstas pueden acceder a los miembros con acceso a nivel de paquete de cada una de las otras clases di-
rectamente, a través de referencias a objetos de las clases apropiadas.
La aplicación de la fi gura 8.20 demuestra el acceso a los paquetes. La aplicación contiene dos clases en un
archivo de código fuente: la clase de aplicación
PruebaDatosPaquete
(líneas 5 a 21) y la clase
DatosPaquete
(líneas 24 a 41). Al compilar este programa, el compilador produce dos archivos
.class
separados:
PruebaDa-
tosPaquete.class
y
DatosPaquete.class
. El compilador coloca los dos archivos
.class
en el mismo direc-
torio, por lo que las clases se consideran como parte del mismo paquete. Como forman parte del mismo paquete,
se permite a la clase
PruebaDatosPaquete
modifi car los datos con acceso a nivel de paquete de los objetos
DatosPaquete
.
En la declaración de la clase
DatosPaquete
, las líneas 26 y 27 declaran las variables de instancia
numero
y
cadena
sin modifi cadores de acceso; por lo tanto, éstas son variables de instancia con acceso a nivel de paquete. El
método
main
de la aplicación
PruebaDatosPaquete
crea una instancia de la clase
DatosPaquete
(línea 9) para
demostrar la habilidad de modifi car las variables de instancia de
DatosPaquete
directamente (como se muestra
en las líneas 15 y 16). Los resultados de la modifi cación se pueden ver en la ventana de resultados.
360
Capítulo 8 Clases y objetos: un análisis más detallado
1
// Fig. 8.20: PruebaDatosPaquete.java
2
// Los miembros con acceso a nivel de paquete de una clase son accesibles
3
// para las demás clases en el mismo paquete.
4
5
public class
PruebaDatosPaquete
6
{
7
public static void
main( String args[] )
8
{
9
DatosPaquete datosPaquete =
new
DatosPaquete();
10
11
// imprime la representación String de datosPaquete
12
System.out.printf(
"Despues de instanciar:\n%s\n"
, datosPaquete );
13
14
// modifica los datos con acceso a nivel de paquete en el objeto datosPaquete
15
datosPaquete.numero =
77
;
16
datosPaquete.cadena =
"Adios"
;
17
18
// imprime la representación String de datosPaquete
19
System.out.printf(
"\nDespues de modificar valores:\n%s\n"
, datosPaquete );
20
}
// fin de main
21
}
// fin de la clase PruebaDatosPaquete
22
23
// clase con variables de instancia con acceso a nivel de paquete
24
class
DatosPaquete
25
{
26
int
numero;
// variable de instancia con acceso a nivel de paquete
27
String cadena;
// variable de instancia con acceso a nivel de paquete
Figura 8.20
| Los miembros con acceso a nivel de paquete de una clase son accesibles para las demás clases en el
mismo paquete. (Parte 1 de 2).
08_MAQ_CAP_08.indd360
4/19/081:23:59AM