¿Cómo se utiliza Narrowing Cast?
Las variables de referencia de la clase superior también pueden hacer referencia a las instancias de subclase en tiempo de ejecución. Puede copiar esta referencia nuevamente a una variable de referencia del tipo de subclase. Para asignar una referencia de clase superior a una referencia de subclase, debe utilizar el operador de asignación Narrowing Cast:
MOVE … ?TO … o su forma breve ?=.
Si no, obtendrá un mensaje indicando que no es seguro que todos los componentes a los que se puede acceder sintácticamente después de la asignación cast estén disponibles en la actualidad en la instancia. Como regla, la clase de subclase contiene más componentes que la clase superior.
Con el objetivo de entender el funcionamiento, crearemos un programa donde implementaremos la lógica, es importante especificar que utilizamos lógica del artículo anterior “Widening Cast”.
Utilizando la misma lógica del ejercicio anterior creamos la clase ANIMAL. Luego creamos la clase LEON que hereda de la clase ANIMAL. En la clase superior, creamos el método ANDAR y redefinimos el método en la clase hija. En la implementación de cada método indicamos con sentencias WRITE qué tipo de objeto anda. En el evento START-OF-SELECTION creamos dos referencias de la clase LEON e instanciamos un objeto en la primera referencia. Asignamos a una referencia de tipo ANIMAL el objeto instanciado. Utilizamos Narrowing Cast y asignamos a la segunda referencia de la clase LEON la referencia del objeto ANIMAL. Llamamos desde la referencia LEON al método ANDAR.
Utilizamos también los bloques TRY-CATCH para capturar las excepciones de tipo CAST.