Pero por dios..
if ( persona[1] instanceof Administrador ){
jefe = (administracion) personal[1];
}
ESO ES TOTALMENTE ILOGICO......
A no ser que el casteo sea por una variable.. o sea: jefe=(variable) peronal[1]...
Pero sino.. PARA QUE VOY A QUERER COMPROBAR ALGO, que se puede hacer MIRANDO!
No siempre puedes mirar como estan implementadas las clases. Por ejemplo, suponte que alguien te da la clase Stock, y te provee una interfaz para usarla que solo tiene el método obtenerComponentesEnStock() que retorna componentes de una computadora. Los componentes pueden ser Gabinete, Monitor, Teclado, etc, pero te los devuelve como Componentes. Es decir, todos extienden a Componente, por ejemplo.
En tu programa, dado que no sabes que recibes, querrás chequear si un Componente dado es un Monitor. Entonces, recorres la lista retornada por Stock:
for (Component c
: objetoStock.
obtenerComponentesEnStock()){ if (c instanceof Monitor)
//hacer algo
else if (c instanceof Teclado)
//hacer algo
//etc
}
Lo mismo te puedo decir para una clase dibujadora (tipo Paint) o en tu caso, ese arreglo contiene Personas. Pero Personas puede hacer referencia, todo en un mismo arreglo, a Administradores, Brujos, Fumadores de Opio, Universitarios, Tolo's Gallego, etc.
Se entiende?
Un saludo.