mediante las opciones de línea de comandos 

-classpath

-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

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