JavaRush /Java Blog /Random-IT /Ampliamento/restringimento delle tipologie di riferimento...
Core
Livello 35
Екатеринбург

Ampliamento/restringimento delle tipologie di riferimento: diverse fonti - diversa interpretazione

Pubblicato nel gruppo Random-IT
Buon pomeriggio. C'è il sospetto che ci sia un errore nelle lezioni JavaRush. Sia presente una classe Parent e da questa ereditata una classe Child . siano presenti le seguenti righe di codice: Parent parent = new Child; Child child = (Child) parent; Secondo la lezione del corso di livello 12, lezione 1 (1. Polimorfismo e overriding), paragrafo 5) (Type casting. ) la prima riga è un restringimento e la seconda è un'espansione (nella lezione , la Mucca è il genitore, la Balena è l'erede) Ma questo non è vero. Tutto è esattamente il contrario. Il senso di quanto descritto è chiaro: nella prima riga abbiamo creato un oggetto di tipo Child e limitato il suo utilizzo ai soli metodi descritti nella classe Parent. Ma questa è un'estensione e quindi tale riduzione avviene implicitamente. E nei materiali aggiuntivi del livello 10 si diceva: Il tuo testo da collegare...
Estensione significa passare da una tipologia più specifica a una tipologia meno specifica, ad es. passaggio dai figli ai genitori. Nel nostro esempio, la conversione da qualsiasi erede (Figlio, Figlio2) al genitore (Parent) è un'estensione, una transizione verso un tipo più generale. Similmente al caso dei tipi primitivi, questa transizione viene effettuata dalla JVM stessa se necessario ed è invisibile allo sviluppatore, cioè non richiede alcuno sforzo aggiuntivo, poiché riesce sempre: è sempre possibile accedere a un oggetto generato da un erede in base al tipo del suo genitore. Genitore p1=nuovo figlio(); Genitore p2=nuovo Figlio2(); In entrambe le righe alle variabili del tipo Parent viene assegnato un valore di tipo diverso, il che significa che avviene una conversione. Poiché si tratta di un'estensione, viene eseguita automaticamente e ha sempre esito positivo.
La seconda riga del mio esempio, invece, secondo la stessa add. materiali è un restringimento che richiede l'indicazione esplicita della tipologia tra parentesi. E nella conferenza viene interpretato come un'estensione, il che probabilmente è sbagliato. Non voglio avere una doppia visione contrastante del type casting. Di seguito è riportato un frammento della conferenza. frammento di conferenza C'erano ancora sospetti di errori nelle lezioni (precedenti). Dove dovrei scrivere a riguardo? Non l'ho trovato nelle FAQ.
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION