No... non stai capendo: l'oggetto numRaz2 va dichiarato statico se lo vuoi usare come lo stai usando. Non ci sono ne "se", né "ma". Non è questione di "ambiguità" a livello di compilatore, è proprio sbagliato a livello logico. Il compilatore non sa nulla di quanti e quali oggetti verranno creati della classe "Oggetto_1" o "Oggetto_2" (e non gliene frega nulla). Lui sa solo che stai cercando di usare un oggetto statico di nome "numRaz2" che non esiste...
Quando tu scrivi NomeClasse.qualcosa, quel qualcosa deve obbligatoriamente essere statico, altrimenti quell'invocazione non ha proprio senso. Se tu avessi ben chiara la differenza fra statico e non-statico questa cosa l'avresti presa per assodata. Se non è così, devi studiarla perchè è importantissima (ed imprescindibile per la programmazione orientata agli oggetti).
In questa pagina del tutorial ufficiale trovi le spiegazioni sul modificatore static, ma ti deve essere chiaro anche tutto ciò che viene detto prima (cioè, i membri non-statici).
Semplicemente rendendo statico "numRaz2" (e pubblico, altrimenti rischi di non poterlo usare ovunque):Detto questo, dato che maggiore() è definito nella classe Razionale, come posso confrontare numeroRazionale (5/4) e numRaz2 (7/8)?
codice:public class Oggetto_2 { public static Razionale numRaz2 = new Razionale (7,8); ... }
Ciao.![]()




Rispondi quotando
