Visualizzazione dei risultati da 1 a 6 su 6

Discussione: Interazione tra classi

  1. #1

    Interazione tra classi

    Buongiorno a tutti!
    Sto implementando una classe che si occupa della gestione degli interi e mi è chiesto di "Fare uso di eventuali funzioni matematiche accessorie, definendole come metodi static di una classe che implementa funzioni matematiche".
    A questo proposito ho creato una public class Mate, la quale ha un metodo privato, public static int mcd (int a, int b);
    Nonostante abbia definito questa classe public, quando vado ad invocare il metodo mcd nella classe Interi, questo non viene trovato.

    Nel file Intero.java:

    codice:
    class Intero {
     .....
     int div = mcd(a,b);
    }

    Nel file Mate.java:
    codice:
    public class Mate {
     public static int mcd (int a , int b)
       {....}
    }
    Compilando il file Intero.java il compilatore risponde: "cannot find symbol" perché penso che non trovi la funzione mcd, come fare? L'ho definita public, a parte questo devo importarla con qualche comando??

    E' il mio primo programmino in Java, abbiate pazienza.
    Grazie a chi risponderà.
    Altro non ci apparìa che il cielo e l'onda Quando il Saturnio sul veloce legno Sospese in alto una cerulea nube
    Sotto cui tutte intenebrarsi l'acque

  2. #2
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    provo: Mate.mcd(a,b);

  3. #3
    Perfetto, funziona, grazie mille!
    In effetti i metodi statici vanno invocati prettamente su classi, non oggetti, sbaglio?

    Io vengo dal C e lì per far interagire i vari programmi occorre includere gli header files. Qua su Java invece è viene effettuata automaticamente una ricerca l''interno della dir in fase di compilazione ?
    Altro non ci apparìa che il cielo e l'onda Quando il Saturnio sul veloce legno Sospese in alto una cerulea nube
    Sotto cui tutte intenebrarsi l'acque

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da LiLyblack
    In effetti i metodi statici vanno invocati prettamente su classi, non oggetti, sbaglio?
    A livello pratico è meglio usare il nome della classe per accedere a membri statici. Ma funziona anche avendo un reference, sebbene in modo un po' "sibillino" (e quindi da evitare). In quanto viene usato il tipo statico del reference.

    Per spiegare meglio:

    Mate m = null;
    m.mcd (....);

    Potrebbe sembrare che venga lanciato un NullPointerException ma non è così. Se il metodo mcd è statico, al compilatore interessa solo il tipo statico del reference che è Mate, quindi in effetti è come se si facesse Mate.mcd (....).


    Nota finale: se la tua classe contiene solo metodi statici e quindi non ha "senso" creare istanze di quella classe, allora in genere è buona cosa mettere un costruttore con modificatore 'private', in modo che non si possano creare istanze.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Grazie per i consigli e le precisazioni.
    Proprio riguardo a questo, prima ho definito la classe Mathe non public e il metodo mcd private.. in effetti funziona senza problemi.. ma non capisco: se un metodo è definito private non deve essere utilizzato solo all'interno di quella classe?

    Perché non mi dà errore in fase di compilazione quando lo richiamo in un'altra classe?

    Questa cosa proprio mi sfugge.
    Grazie a tutti.
    Altro non ci apparìa che il cielo e l'onda Quando il Saturnio sul veloce legno Sospese in alto una cerulea nube
    Sotto cui tutte intenebrarsi l'acque

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da LiLyblack
    ho definito la classe Mathe non public e il metodo mcd private.. in effetti funziona senza problemi.. ma non capisco: se un metodo è definito private non deve essere utilizzato solo all'interno di quella classe?
    Sì esatto.

    Bisogna vedere cosa hai scritto realmente .... il codice che hai postato sopra mostra che Mate è public e mcd è altrettanto public. Così è ok.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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 © 2025 vBulletin Solutions, Inc. All rights reserved.