Next: Estructuras de control
Up: Repaso de Java
Previous: Tipos simples
Modificadores de acceso:
- private:
accesible solamente desde la propia clase
- package:
(o ningún modificador)
accesible solamente desde la propia clase o dentro del mismo paquete
- protected:
accesible solamente desde la propia clase, dentro del mismo paquete,
o desde clases derivadas
- public:
accesible siempre cuando la clase es visible
(En C++, por defecto, los miembros son privados, mientras en Java
los miembros son por defecto del paquete.)
Modificadores de miembros siendo instancias de objetos:
- final:
declara constantes
(diferencia a C++ donde se declara constantes con const),
aunque las constantes no se pueden modificar en el transcurso del
programa, pueden ser calculadas durante sus construcciónes;
las variables finales, aún declaradas sin inicialización, tienen
que obtener sus valores como muy tarde en la fase de construcción
de un objeto de la clase
- static:
declara miembros de la clase que pertenecen
a la clase y no a instancias de objetos,
es decir, todos los objetos de la clase acceden a la misma cosa
- transient:
excluye un miembro del proceso de conversión en un flujo de bytes
si el objeto se salva al disco o se transmite por una conexión
(no hay en C++)
- volatile:
ordena a la máquina virtual de Java que no use ningún tipo
de cache para el miembro, así es más probable (aunque no
garantizado) que varios hilos vean el mismo valor de una variable;
declarando variables del tipo long o double
como volatile aseguramos que las operaciones básicas sean
atómicas
Modificadores de miembros siendo métodos:
- abstract:
el método todavía no está completo, es decir, no se puede
instanciar objetos antes de que se haya implementado el método
en una clase derivada
(parecido a los métodos puros de C++)
- static:
el método pertenece a la clase y no a un objeto de la clase,
un método estático puede acceder solamente miembros estáticos
- final:
no se puede sobreescribir el método en una clase derivada
(no hay en C++)
- synchronized:
el método pertenece a una región crítica del objeto
(no hay en C++)
- native:
propone una interfaz para llamar a métodos escritos en otros
lenguajes, su uso depende de la implementación de la
máquina virtual de Java
(no hay en C++, ahí se realiza durante el linkage)
- strictfp:
obliga a la máquina virtual a cumplir el estándar de
IEEE para los números flotantes
(no hay en C++, ahí depende de las opciones del compilador)
Un método abstracto no puede ser al mismo tiempo ni final,
ni estático, ni sincronizado, ni nativo, ni estricto.
Un método nativo no puede ser al mismo tiempo ni abstracto
ni estricto.
Nota que el uso de final y private puede mejorar
las posibilidades de optimización del compilador, es decir,
su uso deriva en programas más eficientes.
Next: Estructuras de control
Up: Repaso de Java
Previous: Tipos simples
© 2003, Dr. Arno Formella, Universidad de Vigo, Departamento de Informática