Subido por Alejandro Solis

CLASES ANIDADAS

Anuncio
CLASES ANIDADAS
Las clases anidadas son clases definidas dentro de otras clases, por lo que son miembros
de las clases que las contienen. Este tipo de clase, a diferencia de las clases externas, que
solo pueden ser declaradas como públicas o amigables, las clases anidadas pueden ser
declaradas como públicas, amigables, privadas o protegidas. Existen dos tipos: las clases
anidadas estáticas y las clases internas.
public class ClaseExterna {
static class ClaseAnidadaEstatica {
}
class ClaseInterna {
}
}
CLASE ANIDADA ESTÁTICA
Una clase anidada que es declarada estática es simplemente llamada una clase anidada
estática. Además, una clase anidada estática no puede acceder directamente a los
atributos y métodos de instancia de su clase contenedora, –puede utilizarlos únicamente a
través de un objeto. Estos sirven principalmente como organizadores de código. Para
acceder a una clase estática se utiliza su clase contenedora:
ClaseExterna.ClaseAnidadaEstática
De esta manera, para crear un objeto de la clase anidada estática se usa la siguiente
sintaxis:
ClaseExterna.ClaseAnidadaEstática
ClaseExterna.ClaseAnidadaEstática();
nombreObjeto
=
new
CLASE INTERNA
Las clases anidadas que no son declaradas como estáticas reciben el nombre de clases
internas.
Al igual que cualquier otra variable o método de instancia, una clase interna está asociada
con un objeto de su clase contenedora, y tiene acceso directo a todos los miembros de
dicho objeto, incluso de aquellos que son privados. También, dado que están asociadas con
una instancia de un objeto, las clases internas no pueden definir atributos estáticos.
Para instanciar un objeto (crear un objeto a partir de la plantilla definida) de una clase
interna, primero debemos instanciar a su clase contenedora, para después crear el objeto
interno dentro del objeto. Por ejemplo:
class ClaseExterna{
class ClaseInterna{
}
}
class OtraClase{
ClaseExterna objetoExterno = new Clase Externa()
ClaseExterna.ClaseInterna
objetoInterno
=
ClaseInterna();
}
objetoExterno.new
Beneficios de usos de clases internas:
1. Agrupamiento lógico de clases: Si una clase es útil únicamente para otra clase,
entonces es lógico incluirla dentro de dicha clase y mantenerlas juntas. Anidar estas
“clases auxiliares” hace que su distribución sea más fácil.
2. Incrementa el encapsulamiento: Considera dos clases de alto nivel: A y B, donde
B necesita acceder a algunos miembros de A, que de otra manera serían declarados
privados. Escondiendo la clase B dentro de A, A puede declarar sus miembros
privados, y B conserva su acceso a ellos. Adicionalmente, B misma puede
esconderse del resto del mundo.
3. Código más fácil de leer y mantener: Anidando pequeñas clases dentro de clases
de alto nivel coloca el código más cerca de donde es utilizado.
Descargar