JavaRush /Blog Java /Random-ES /Ampliación/estrechamiento de los tipos de referencia: dif...
Core
Nivel 35
Екатеринбург

Ampliación/estrechamiento de los tipos de referencia: diferentes fuentes - diferente interpretación

Publicado en el grupo Random-ES
Buenas tardes. Existe la sospecha de un error en las conferencias de JavaRush. Sea una clase Parent y una clase Child heredada de ella, sean las siguientes líneas de código: Parent parent = new Child; Child child = (Child) parent; Según la conferencia del curso de nivel 12, lección 1 (1. Polimorfismo y anulación), párrafo 5) (Type casting. ) la primera línea es un estrechamiento y la segunda es una expansión (en la conferencia , la Vaca es la madre, la Ballena es la heredera) Pero esto no es cierto. Todo es exactamente al revés. El significado de lo descrito es claro: en la primera línea creamos un objeto de tipo Child y limitamos su uso solo a los métodos descritos en la clase Parent. Pero se trata de una extensión y, por tanto, dicha reducción se produce implícitamente. Y en los materiales adicionales del nivel 10 se decía: Tu texto para enlazar...
Extensión significa pasar de un tipo más específico a un tipo menos específico, es decir, transición de hijos a padres. En nuestro ejemplo, la conversión de cualquier heredero (Hijo, Hijo2) a padre (Padre) es una extensión, una transición a un tipo más general. Al igual que ocurre con los tipos primitivos, esta transición la realiza la propia JVM si es necesario y es invisible para el desarrollador, es decir, no requiere ningún esfuerzo adicional, ya que siempre tiene éxito: siempre se puede acceder a un objeto generado a partir de un heredero por el tipo de su padre. Padre p1=nuevo Niño(); Padre p2=nuevo Niño2(); En ambas líneas, a las variables de tipo Parent se les asigna un valor de un tipo diferente, lo que significa que se produce una conversión. Como se trata de una extensión, se realiza automáticamente y siempre tiene éxito.
La segunda línea de mi ejemplo, por el contrario, según el mismo complemento. materiales es una limitación que requiere una indicación explícita del tipo entre paréntesis. Y en la conferencia se interpreta como una extensión, lo cual probablemente sea incorrecto. Por favor, explíquelo. No quiero tener una visión doblemente contradictoria de la conversión de tipos. A continuación se muestra un fragmento de la conferencia. fragmento de conferencia Todavía había sospechas de errores en las conferencias (anteriores). ¿Dónde debería escribir sobre esto? No lo encontré en las preguntas frecuentes.
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION