Torna indietro   Hardware Upgrade Forum > Software > Programmazione

ASUS ROG Swift OLED PG34WCDN recensione: il primo QD-OLED RGB da 360 Hz
ASUS ROG Swift OLED PG34WCDN recensione: il primo QD-OLED RGB da 360 Hz
ASUS ROG Swift OLED PG34WCDN è il primo monitor gaming con pannello QD-OLED Gen 5 a layout RGB Stripe Pixel e 360 Hz su 34 pollici: lo abbiamo misurato con sonde colorimetriche e NVIDIA LDAT. Ecco tutti i dati
Recensione Nothing Phone (4a) Pro: finalmente in alluminio, ma dal design sempre unico
Recensione Nothing Phone (4a) Pro: finalmente in alluminio, ma dal design sempre unico
Nothing Phone (4a) Pro cambia pelle: l'alluminio unibody sostituisce la trasparenza integrale, portando una solidità inedita. Sotto il cofano troviamo uno Snapdragon 7 Gen 4 che spinge forte, mentre il display è quasi da top dig amma. Con un teleobiettivo 3.5x e la Glyph Matrix evoluta, è la prova di maturità di Carl Pei. C'è qualche compromesso, ma a 499EUR la sostanza hardware e la sua unicità lo rendono un buon "flagship killer" in salsa 2026
WoW: Midnight, Blizzard mette il primo, storico mattone per l'housing e molto altro
WoW: Midnight, Blizzard mette il primo, storico mattone per l'housing e molto altro
Con Midnight, Blizzard tenta il colpaccio: il player housing sbarca finalmente su Azeroth insieme a una Quel'Thalas ricostruita da zero. Tra il dramma della famiglia Ventolesto e il nuovo Prey System, ecco com'è la nuova espansione di World of Warcraft
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 15-07-2008, 11:23   #1
Seether
Junior Member
 
Iscritto dal: Feb 2008
Messaggi: 27
[Java] Perchè questo output?

Ciao a tutti, avrei un paio di domande sul seguente frammento di codice:

Codice:
class a {
	public a() {
		System.out.println("Costruttore di a senza parametri "+this.toString()+" "+this.getClass());
	}	
	public a(int s) {
		System.out.println("Costruttore di a con un parametro "+this.toString()+" "+this.getClass());
	}
}

class b extends a {
	a test = new a(8);
	int e;
		public b (int x) {
		e = x;
		System.out.println("Costruttore di b con un parametro "+this.toString()+" "+this.getClass());
	}
	public b () {
		this(9);
		System.out.println("Costruttore di b senza parametri"+this.toString()+" "+this.getClass());
	}
}

public class prova {
	public static void main(String args[]) { 
	a primo = new a(0);
	a secondo = new a(3);
	System.out.println("");
	b terzo = new b();
	}
}
L'output di questo programma è il seguente:

Codice:
Costruttore di a con un parametro a@3e25a5 class a
Costruttore di a con un parametro a@19821f class a

Costruttore di a senza parametri b@addbf1 class b
Costruttore di a con un parametro a@42e816 class a
Costruttore di b con un parametro b@addbf1 class b
Costruttore di b senza parametrib@addbf1 class b
Nell'output, le ultime quattro righe sono tutte relative all'istanziamento dell'oggetto "terzo", ma non mi sono troppo chiare... Cosa provoca esattamente ciascuna di esse, e qual è la ragione precisa del loro ordine? Inoltre, come si spiega che nella prima mi ritrovo anche col costruttore di "a" in un oggetto di tipo "b"?

Grazie mille anticipatamente
Seether è offline   Rispondi citando il messaggio o parte di esso
Old 15-07-2008, 11:54   #2
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da Seether Guarda i messaggi
Cosa provoca esattamente ciascuna di esse, e qual è la ragione precisa del loro ordine?
prima viene eseguito a() implicitamente chiamato da b(), poi si ritorna all'inizializzazione di b che prevede l'istanziamento di un oggetto a con un argomento (e quindi viene chiamato a(int)), poi si entra in b() il quale prima chiama b(int) e poi stampa la sua riga di output.


Quote:
Inoltre, come si spiega che nella prima mi ritrovo anche col costruttore di "a" in un oggetto di tipo "b"?
perché il costruttore no-arg di b prima di entrare in esecuzione chiama implicitamente il super-costruttore no-arg, cioè il costruttore no-arg di a; la classe tuttavia sempre b è.
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 15-07-2008, 12:02   #3
Seether
Junior Member
 
Iscritto dal: Feb 2008
Messaggi: 27
Quindi se ho capito bene l'invocazione del costruttore della classe genitrice avviene comunque PRIMA dell'istanziamento delle variabili della classe figlia, no?

Ok, grazie mille ^^
Seether è offline   Rispondi citando il messaggio o parte di esso
Old 15-07-2008, 12:12   #4
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
L'odine di esecuzione durante l'inizializzazione di un oggetto di una data classe è il seguente (vado a memoria quindi perdonate/corregete errori e omisisoni):
- blocchi statici;
- costruttore/i (delle eventuali classi antenate nella catena di eredità);
- inizializzazione dei membri dichiarati (ai valori di default da parte della jvm);
- costruttore (della classe in oggetto).

@EDIT:
Seether hai ragione, grazie della correzione, ho corretto il post anch'io.
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)

Ultima modifica di banryu79 : 15-07-2008 alle 12:19.
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 15-07-2008, 12:15   #5
Seether
Junior Member
 
Iscritto dal: Feb 2008
Messaggi: 27
In teoria, come si evince da questo stesso esempio, le variabili di istanza sono inizializzate *prima* del costruttore della classe che le contiene, ma comunque *dopo* il costruttore della classe genitrice (ammesso che esista).
Seether è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


ASUS ROG Swift OLED PG34WCDN recensione: il primo QD-OLED RGB da 360 Hz ASUS ROG Swift OLED PG34WCDN recensione: il prim...
Recensione Nothing Phone (4a) Pro: finalmente in alluminio, ma dal design sempre unico Recensione Nothing Phone (4a) Pro: finalmente in...
WoW: Midnight, Blizzard mette il primo, storico mattone per l'housing e molto altro WoW: Midnight, Blizzard mette il primo, storico ...
Ecovacs Goat O1200 LiDAR Pro: la prova del robot tagliaerba con tagliabordi integrato Ecovacs Goat O1200 LiDAR Pro: la prova del robot...
Recensione Samsung Galaxy S26+: sfida l'Ultra, ma ha senso di esistere? Recensione Samsung Galaxy S26+: sfida l'Ultra, m...
Secondo Elon Musk FSD è più...
Anche Cloudflare fissa il 2029 per la si...
Hacker sfruttano da mesi un bug segreto ...
ASUSTOR Lockerstor 24R Pro Gen2: 24 bay ...
Rigetti supera la soglia dei 100 qubit: ...
eFootball raggiunge il miliardo di downl...
Come provare OpenClaw facilmente grazie ...
Microsoft conferma: questo glitch dell'o...
Toyota bZ7: una berlina da oltre 5 metri...
Artemis II, le prime foto del lato nasco...
Sempre più pubblicità su YouTube: arriva...
Polestar fa +80% in Italia e tocca quota...
Il tuo Mac smette di connettersi a Inter...
La nuova alleanza Intel-Google ridefinis...
Energia troppo cara, regole da rivedere:...
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: 21:33.


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