Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Polestar 3 Performance, test drive: comodità e potenza possono convivere
Polestar 3 Performance, test drive: comodità e potenza possono convivere
Abbiamo passato diversi giorni alla guida di Polestar 3, usata in tutti i contesti. Come auto di tutti i giorni è comodissima, ma se si libera tutta la potenza è stupefacente
Qualcomm Snapdragon X2 Elite: l'architettura del SoC per i notebook del 2026
Qualcomm Snapdragon X2 Elite: l'architettura del SoC per i notebook del 2026
In occasione del proprio Architecture Deep Dive 2025 Qualcomm ha mostrato in dettaglio l'architettura della propria prossima generazione di SoC destinati ai notebook Windows for ARM di prossima generazione. Snapdragon X2 Elite si candida, con sistemi in commercio nella prima metà del 2026, a portare nuove soluzioni nel mondo dei notebook sottili con grande autonomia
Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice
Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice
DJI Mini 5 Pro porta nella serie Mini il primo sensore CMOS da 1 pollice, unendo qualità d'immagine professionale alla portabilità estrema tipica di tutti i prodotti della famiglia. È un drone C0, quindi in un peso estremamente contenuto e che non richiede patentino, propone un gimbal rotabile a 225 gradi, rilevamento ostacoli anche notturno e autonomia fino a 36 minuti. Caratteristiche che rendono il nuovo drone un riferimento per creator e appassionati
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: 2780
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: 2780
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: 2780
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


Polestar 3 Performance, test drive: comodità e potenza possono convivere Polestar 3 Performance, test drive: comodit&agra...
Qualcomm Snapdragon X2 Elite: l'architettura del SoC per i notebook del 2026 Qualcomm Snapdragon X2 Elite: l'architettura del...
Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice Recensione DJI Mini 5 Pro: il drone C0 ultra-leg...
ASUS Expertbook PM3: il notebook robusto per le aziende ASUS Expertbook PM3: il notebook robusto per le ...
Test ride con Gowow Ori: elettrico e off-road vanno incredibilmente d'accordo Test ride con Gowow Ori: elettrico e off-road va...
Google apre la strada al file sharing tr...
Black Friday Monitor 2025: OLED, QD-OLED...
Arrivano le nuove specifiche Matter 1.5:...
Microsoft rende open source la trilogia ...
DAZN continua la lotta contro la pirater...
Generativa o predittiva? Il futuro dell’...
BYD va all-in con la Atto 2: batteria pi...
Google modifica la richiesta di consenso...
Black Friday TV: OLED, QLED e Mini-LED a...
007 First Light torna a mostrarsi all'ev...
MOVA Z60 Ultra Roller Complete: il Black...
Clair Obscur: Expedition 33 trionfa ai G...
Son quasi regalate: 135€ per le Squier b...
Windows 11: il copia-incolla via IA funz...
La scopa elettrica Mova K30 Mix crolla a...
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: 11:24.


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