AOWS

Just another adrian’s weblog

Acceder a los miembros privados de una inner class (y viceversa)

leave a comment »

Desde pequeños nos lo han grabado con fuego: “un miembro de una clase que esté definido como privado no es accesible desde fuera de la misma”. Sin embargo esta regla no va con las inner classes.

class Outer {
	class Inner {
		private int size = 0;
	}
	
	public static void main(String[] args) {
		System.out.println(new Outer().new Inner().size);
	}
}

Este código compila sin problemas, imprimiendo 0 (el valor de size, una variable privada de Inner).

A la inversa, una clase interna también puede acceder sin problemas a métodos y variables de su clase contenedora.

class Outer {

	private int size = 0;
	
	class Inner {
		void print() {
			System.out.println(size);
		}
	}
	
	public static void main(String[] args) {
		new Outer().new Inner().print();
	}
}

En un primer vistazo esto puede chirriar un poco, pero en realidad una inner class no deja de ser un miembro más de una clase (en este caso, una clase miembro) que tiene acceso al resto.

Written by adrian

29 abril, 2009 a 22:44

Publicado en Uncategorized

Tagged with

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: