Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 12 su 12

Hybrid View

  1. #1
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Quote Originariamente inviata da sandonatese Visualizza il messaggio
    Nel mio caso numRaz2 non è una variabile di istanza ma un oggetto della classe Razionale, definito all'interno della classe Oggetto_2, mentre numeroRazionale è l'altro oggetto della classe Razionale, dfinito nella classe Oggetto_1. Quindi non posso dichiararlo come statico e non c'è possibilità di confusione per il compilatore perchè numRaz2 è univoco e si riferisce all'istanza 7/8 di Razionale.
    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).

    Detto questo, dato che maggiore() è definito nella classe Razionale, come posso confrontare numeroRazionale (5/4) e numRaz2 (7/8)?
    Semplicemente rendendo statico "numRaz2" (e pubblico, altrimenti rischi di non poterlo usare ovunque):


    codice:
    public class Oggetto_2 {
       public static Razionale numRaz2 = new Razionale (7,8);
       ...
    }

    Ciao.
    Ultima modifica di LeleFT; 07-04-2014 a 16:17
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  2. #2
    Ciao, ti ringrazio per l infinita pazienza che stai dimostrandosono sicuro che la soluzione sia una bischerata ma ormai voglio trovarla. Ora sono fuori ma appena torno a casa provo la tua soluzione. Secondo me il compilatore non mi fa mettere i modificatori public e static davanti al'oggetto che sto istanziando, ma spero vivamente che sia come dici tu

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.