Hola:
Efectivamente es así, puedes guardar una clase hija en una variable de tipo padre y una vez hecho esto, no puedes llamar directamente a los métodos de la clase hija. Pero para eso tienes el "cast" que te permite recuperar la clase hija, así
( (hijo)hijo2 ).habla_hijo();
es decir, tienes que poner delante de la variable y entre paréntesis el tipo real que contiene (hijo). Esto no sirve para convertir cualquier cosa en cualquier otra, te dará error en tiempo de ejecución si hijo2 no contiene un hijo. Para prevenir errores, puedes hacer una comprobación antes
Código Java:
Ver originalif (hijo2 instanceof hijo) {
( (hijo)hijo2 ).habla_hijo();
}
Se bueno.