JavaRush /Blogue Java /Random-PT /Expansão/estreitamento de tipos de referência: diferentes...
Core
Nível 35
Екатеринбург

Expansão/estreitamento de tipos de referência: diferentes fontes – diferentes interpretações

Publicado no grupo Random-PT
Boa tarde. Há suspeita de erro nas palestras do JavaRush. Que haja uma classe Pai e uma classe Filho herdada dela. Que haja as seguintes linhas de código: Parent parent = new Child; Child child = (Child) parent; De acordo com a aula do curso de nível 12, lição 1 (1. Polimorfismo e substituição), parágrafo 5) (Conversão de tipo. ) a primeira linha é um estreitamento e a segunda é uma expansão (na palestra , a vaca é a mãe, a baleia é a herdeira). Mas isso não é verdade. Tudo é exatamente o oposto. O significado do que está descrito é claro: na primeira linha criamos um objeto do tipo Child e limitamos seu uso apenas aos métodos descritos na classe Parent. Mas isto é uma extensão e, portanto, tal redução ocorre implicitamente. E nos materiais adicionais do nível 10 foi dito: Seu texto para linkar...
Extensão significa passar de um tipo mais específico para um tipo menos específico, ou seja, transição dos filhos para os pais. No nosso exemplo, a conversão de qualquer herdeiro (Filho, Filho2) para o pai (Pai) é uma extensão, uma transição para um tipo mais geral. Semelhante ao caso dos tipos primitivos, essa transição é feita pela própria JVM se necessário e é invisível para o desenvolvedor, ou seja, não requer nenhum esforço adicional, pois sempre dá certo: você sempre pode acessar um objeto gerado a partir de um herdeiro pelo tipo de seu pai. Pai p1=novo Filho(); Pai p2=new Filho2(); Em ambas as linhas, variáveis ​​do tipo Parent recebem um valor de um tipo diferente, o que significa que ocorre uma conversão. Por se tratar de uma extensão, é feita automaticamente e sempre tem sucesso.
A segunda linha do meu exemplo, ao contrário, segundo o mesmo acréscimo. materiais é um estreitamento que requer uma indicação explícita do tipo entre parênteses. E na palestra é interpretado como uma extensão, o que provavelmente está errado. Por favor, explique. Não quero ter uma visão duplamente conflitante da conversão de tipos. Abaixo segue um fragmento da palestra. fragmento de palestra Ainda havia suspeitas de erros nas palestras (anteriores). Onde devo escrever sobre isso? Não encontrei no FAQ.
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION