Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione Google Pixel 10a, si migliora poco ma è sempre un'ottima scelta
Recensione Google Pixel 10a, si migliora poco ma è sempre un'ottima scelta
Google ha appena rinnovato la sua celebre serie A con il Pixel 10a, lo smartphone della serie più conveniente se consideriamo il rapporto tra costo e prestazioni. Con il chip Tensor G4, un design raffinato soprattutto sul retro e l'integrazione profonda di Gemini, il colosso di Mountain View promette un'esperienza premium a un prezzo accessibile. E il retro non ha nessuno scalino
6G, da rete che trasporta dati a rete intelligente: Qualcomm accelera al MWC 2026
6G, da rete che trasporta dati a rete intelligente: Qualcomm accelera al MWC 2026
Al MWC Qualcomm annuncia una coalizione industriale per lanciare il 6G entro il 2029 e introduce agenti IA per la gestione autonoma della RAN. Ericsson, presente sul palco, conferma la direzione: le reti del futuro saranno IA-native fin dalla progettazione
CHUWI CoreBook Air alla prova: design premium, buona autonomia e qualche compromesso
CHUWI CoreBook Air alla prova: design premium, buona autonomia e qualche compromesso
CHUWI CoreBook Air è un ultraleggero da 1 kg con Ryzen 5 6600H, display 14" 16:10 e 16 GB LPDDR5. Offre buona portabilità, autonomia discreta e costruzione in alluminio, ma storage PCIe 3.0 e RAM saldata limitano l'espandibilità. A 549 euro sfida brand più noti nella stessa fascia di mercato.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 06-06-2008, 18:17   #1
Tony Hak
Senior Member
 
L'Avatar di Tony Hak
 
Iscritto dal: Jun 2005
Città: Napoli
Messaggi: 1661
[Java] Overriding aiuto!

ciao a tutti ! chiedo scusa ma mi dovreste da una mano da amici! ..nel senso che dovete imboccarmi col cucchiaino che le slide del prof sono molto ambigue e internet è superficiale. Si parla di .. OVERRIDING in Java. Il problema del sovraccaricamento. Sulle slide del prof c'e' secritto solo che :

"Una sottoclasse puo' sovrapporre (???) un metodo ereditato e visibile a patto che, rispetto al metodo della superclasse, il nuovo metodo abbia lo stesso nome, tipo di ritorno e lista di argomenti, visibilita' non inferiore."

Tutte ste cose io le ho capite ma mi trovo in situazioni che pur verificandosi queste regole cmq c'e' un errore di compilazione.

Allora mi chiedo : c'e' altro che dovrei sapere su quest'argomento .. grazie in anticipo a coloro che hanno un po' di pazienza per ris a un inesperto in Java
__________________
Tony Hak è offline   Rispondi citando il messaggio o parte di esso
Old 06-06-2008, 18:58   #2
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2787
Attenzione che l'overriding non è il sovraccaricamento, quello è l'overloading. L'overriding non so come tradurlo, io me l'immagino come una specie di sovrascrittura. Dico specie perché in realtà è sempre possibile richiamare il metodo sovrascritto tramite super.nome_metodo()
Ad ogni modo quello che conta è che una volta che hai "overridato" un metodo questo potrà essere richiamato anche tramite un riferimento più generico (un riferimento con tipo di una superclasse) ti faccio un esempio:
Mettiamo che hai la classica classe Persona con un metodo saluta() che stampa "Ciao".
Codice:
class Persona{
  public void saluta(){
    System.out.println("Ciao");
  }
}
Ora creiamo la classe Giovane che per salutare dice "Bella!"
Codice:
class Giovane extends Persona{
  public void saluta(){
    System.out.println("Bella!");
  }
}
Ora posso fare una cosa del genere:
Codice:
class Prova{
  public static void main(String[] args){
    Persona tizio=new Giovane();
    tizio.saluta();
  }
}
tizio saluterà dicendo "Bella!". Nota che tizio è un Giovane referenziato come una Persona, il metodo saluta lo posso richiamare solo perché è definito anche in Persona, se fosse definito solo in Giovane non potrei farlo tramite quel riferimento.

Spero di averti schiarito un po' le idee... Se hai dubbi chiedi pure, magari posta il codice che non ti funziona
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 06-06-2008, 22:39   #3
nuovoUtente86
Senior Member
 
Iscritto dal: Mar 2007
Messaggi: 7863
Ti avevo, in un' altro post, spiegato già da differenza tra override(ridefinizione) e overloading(sovraccarico) accennandoti anche la covarianza del tipo restituito.

1)Override
Quello che accade è che in una classe derivata venga ridefinito il corpo del metodo(ovvero quello che fa) lasciando invariata la firma con al piu un elevamento dei provileggi d' accesso.
Codice:
public class Base{
public String toString(){return "base";}}

public class Derivata{
@override
public String toString(){return "derivata";}}
2)Overloading
Codice:
public class Base{
public String toString(){return "base";}}

public class Derivata{
@override
public String toString(){return "derivata";}

public String toString(String parola){return parola;}}
Come vedi ora nella classe derivata oltre ad essere stato ridefinito il toString(ereditato da Object per tutte le classi) è stato aggiunto un metodo toString che accetta una stringa...quindi è del tutto indipendente dal toString con parametri in ingresso vuoti.
nuovoUtente86 è offline   Rispondi citando il messaggio o parte di esso
Old 07-06-2008, 09:47   #4
Tony Hak
Senior Member
 
L'Avatar di Tony Hak
 
Iscritto dal: Jun 2005
Città: Napoli
Messaggi: 1661
grazie per le ris.. si effettivamente tempo fa lo chiesi ..ma solo ora mi sto ricordando perche' ho lasciato la programmazione in Java per un bel periodo per problemi vari .. cmq .. ora è tutto un po' piu' chiaro .. pero' vorrei chiedervi ..nel caso in cui si devono gestire delle eccezioni come si comportano l'overriding e l'overloading ? ..
__________________
Tony Hak è offline   Rispondi citando il messaggio o parte di esso
Old 07-06-2008, 11:29   #5
nuovoUtente86
Senior Member
 
Iscritto dal: Mar 2007
Messaggi: 7863
Quote:
Originariamente inviato da Tony Hak Guarda i messaggi
grazie per le ris.. si effettivamente tempo fa lo chiesi ..ma solo ora mi sto ricordando perche' ho lasciato la programmazione in Java per un bel periodo per problemi vari .. cmq .. ora è tutto un po' piu' chiaro .. pero' vorrei chiedervi ..nel caso in cui si devono gestire delle eccezioni come si comportano l'overriding e l'overloading ? ..
Nell' overloading ogni metodo è indipendente e quindi si comporta come meglio piace(o meglio è corretto e utile) al programmatore!

Nell' override bisogna fare attenzione all' utilizzo della clausola throws.
Infatti non è possibile nelle classi derivate dichiarare (attraverso throws) che un metodo (sovrascritto ovviamente) potrebbe sollevare Exception se le stesse non sono dichiarate nella firma del metodo base. Al contrario è possibile nelle ridefinizioni(classi derivate) eliminare la clausola throws utilizzata nella classe base.
nuovoUtente86 è offline   Rispondi citando il messaggio o parte di esso
Old 07-06-2008, 11:55   #6
Tony Hak
Senior Member
 
L'Avatar di Tony Hak
 
Iscritto dal: Jun 2005
Città: Napoli
Messaggi: 1661
ehm ... nn è che puoi farmi un esempio..cioe' so cosa significa thorws e compagnia bella.. pero' non ho capito bene la tua spiegazione .. se mi fai un esempio è meglio
__________________
Tony Hak è offline   Rispondi citando il messaggio o parte di esso
Old 07-06-2008, 12:05   #7
nuovoUtente86
Senior Member
 
Iscritto dal: Mar 2007
Messaggi: 7863
è possibile fare questo

Codice:
public class Base{
public String metodo() throws Exception{return "base";}}

public class Derivata{
@override
public String metodo() throws Exception{return "derivata";}} 

oppure
public class Derivata{
@override
public String metodo(){return "derivata";}}
Nota che non ho ridefinito toString in quant implementato in Object senza exception e pertanto non ridefinibiile con clausola throws...Non guardare neanche all' implementazione del metodo...che non ha importanza.


Non è invece possibile fare ciò:

Codice:
public class Base{
public String metodo() {return "base";}}

public class Derivata{
@override
public String metodo() throws Exception{return "derivata";}}
nuovoUtente86 è offline   Rispondi citando il messaggio o parte di esso
Old 07-06-2008, 16:14   #8
Tony Hak
Senior Member
 
L'Avatar di Tony Hak
 
Iscritto dal: Jun 2005
Città: Napoli
Messaggi: 1661
capito ... domanda : ma questo vale solo per le eccezioni Exception ?
__________________
Tony Hak è offline   Rispondi citando il messaggio o parte di esso
Old 07-06-2008, 16:20   #9
nuovoUtente86
Senior Member
 
Iscritto dal: Mar 2007
Messaggi: 7863
In che senso scusa?
nuovoUtente86 è offline   Rispondi citando il messaggio o parte di esso
Old 07-06-2008, 16:31   #10
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2787
Quote:
Originariamente inviato da Tony Hak Guarda i messaggi
capito ... domanda : ma questo vale solo per le eccezioni Exception ?
Anche per le sue sottoclassi. Inoltre se vuoi fare l'override di un metodo che lancia una eccezione specifica (ad esempio una IOException) puoi specificare nella clausola throws quella stessa eccezione o una sua superclasse (ad esempio Exception).
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 07-06-2008, 16:47   #11
nuovoUtente86
Senior Member
 
Iscritto dal: Mar 2007
Messaggi: 7863
Quote:
Originariamente inviato da wingman87 Guarda i messaggi
Anche per le sue sottoclassi. Inoltre se vuoi fare l'override di un metodo che lancia una eccezione specifica (ad esempio una IOException) puoi specificare nella clausola throws quella stessa eccezione o una sua superclasse (ad esempio Exception).
No non puoi sostituire un Exception specifica (esempio IOException) con una una sua superClasse in quanto in questo modo vai ad aumentare il range delle eccezioni sollevate e la specifica di dice che tale range può essere diminuito o reso vuoto....è consentita la sostituzione, vicerversa, con una sottoclasse.
nuovoUtente86 è offline   Rispondi citando il messaggio o parte di esso
Old 07-06-2008, 16:50   #12
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2787
Hai ragione, in effetti non avrebbe senso
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 07-06-2008, 17:00   #13
nuovoUtente86
Senior Member
 
Iscritto dal: Mar 2007
Messaggi: 7863
La puoi vedere dualmente al tipo restituito da un metodo:

se devi restituire un Object(che nel caso delle eccezioni rappresenta la base ovvero Exception)..nulla ti vieta di ritornare una Stringa (nel caso delle eccezioni ipotizziamo IOException)....il contrario ovviamente non è valido.
nuovoUtente86 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione Google Pixel 10a, si migliora poco ma è sempre un'ottima scelta Recensione Google Pixel 10a, si migliora poco ma...
6G, da rete che trasporta dati a rete intelligente: Qualcomm accelera al MWC 2026 6G, da rete che trasporta dati a rete intelligen...
CHUWI CoreBook Air alla prova: design premium, buona autonomia e qualche compromesso CHUWI CoreBook Air alla prova: design premium, b...
Roborock Saros 20: il robot preciso e molto sottile Roborock Saros 20: il robot preciso e molto sott...
ASUS ROG Kithara: quando HIFIMAN incontra il gaming con driver planari da 100mm ASUS ROG Kithara: quando HIFIMAN incontra il gam...
Huawei presenta gli agenti di IA per le ...
Alla scoperta di GAIA, la piattaforma IA...
Crimson Desert alla ricerca dell'equilib...
Ray-Ban Meta, video privati visionati da...
Epic Games fa causa a un ex collaborator...
BYD Blade Battery di seconda generazione...
Pop Mart vs Bambu Lab: la battaglia lega...
Control Resonant entra nella fase alpha ...
1.040 Hz e tecnologia Mini LED: TCL sfid...
Smart retail: arrivano le soluzioni di H...
MOVA, guida all'acquisto per scegliere i...
Roborock Saros 20 X, arriva in Italia l'...
Mese nuovo e offerte di primavera: Amazo...
Amazon Warehouse e Seconda Mano: con le ...
Sony LinkBuds Clip sono le cuffie in ear...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 15:19.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v