Visualizzazione dei risultati da 1 a 10 su 10

Discussione: metodi

  1. #1

    metodi

    Salve a tutti.
    posto il codice e poi spiegoil problema
    Codice PHP:
    public class class1{
    private 
    class2 cl2;
       public 
    class1(){
            
    cl2 = new class2();
       }

       
    cl2.metodo2();
       public 
    metodo1(){
              
    System.out.print("ciao");
        }
    }


    public class 
    class2{
    private 
    class1 cl1;
       public 
    class2(){
            
    cl1 = new class1();
       }

       
    cl1.metodo1();
       public 
    metodo2(){
              
    System.out.print("ciao");
        }

    ogni volta che cerco di accedere da classe2 al metodo cl1, si blocca il programma. è come se andasse in loop e penso che dato ke la 1 richiama la 2 e la 2 richiama la 1ci vada davvero in loop.
    quindi cosa devo fare per fr girare il programma correttamente?
    a me serva ke ogniclasse possa poteraccedere ai metodi dell'altra.
    spero di essermi spiegato bene.....

    Grazie

  2. #2
    Utente di HTML.it L'avatar di Cool81
    Registrato dal
    Dec 2008
    Messaggi
    160
    Mi sa che non si è capito molto..prova a spiegarti meglio...

  3. #3

    Re: metodi

    Originariamente inviato da infiltrato
    Codice PHP:
    public class class1{
    private 
    class2 cl2;
       public 
    class1(){
            
    cl2 = new class2();
       }

       
    cl2.metodo2();
       public 
    metodo1(){
              
    System.out.print("ciao");
        }
    }


    public class 
    class2{
    private 
    class1 cl1;
       public 
    class2(){
            
    cl1 = new class1();
       }

       
    cl1.metodo1();
       public 
    metodo2(){
              
    System.out.print("ciao");
        }

    allora..........
    questo codice quando va in esecuzione si blocca.
    ho pensato che il problema potesse essere che i 2 costruttori si richiamano a vicenda, e quindi si genera il loop (penso).
    esiste un altro modo per far si che dalla classe1 possa accedere a tutti imetodi della classe2, e contemporaneamente dalla classe2 devo poter accedere a tutti imetodi della classe1?

  4. #4
    Utente di HTML.it L'avatar di Pastore12
    Registrato dal
    Oct 2008
    Messaggi
    1,051
    Ma ti rendi conto che hai creato un codice che neppure io riesco a capire???

    Quando inizializzi class1 chiami il costruttore di default, giusto?
    Il costruttore di default cosa fa? Crea un nuovo oggetto class2.
    Per creare un oggetto class2 viene invocato il corrispondente costruttore di default, che a sua volta crea un nuovo oggetto class1. class1 crea un class2, class2 crea un class1...

    Come diavolo ti è riuscito di creare un casino di questo tipo non riesco a spiegarmelo... volevi solo che date 2 classi A e B (iniziale maiuscola, sempre per le classi!!!) la classe A potesse accedere a un metodo di B?

    Prova a vedere questo:
    Codice PHP:
    public class Class1
    {
           private 
    Class2 cl2;// riferimento a una istanza di Class2

           
    public Class1(Class2 cl2)
           {
                  
    this.cl2 cl2;
           }

           public 
    void metodo1()
            {
                   
    // Puoi accedere a metodo2, ma se ci provi vai in loop
                    
    System.out.print("ciao");
            }
    }


    public class 
    Class2
    {
        private 
    Class1 cl1;
        
        public 
    Class2()
        {
                
    cl1 = new class1(this);  // Passa un riferimento a se stessa
           
    }

         public 
    void metodo2()
        {
                
    System.out.print("ciao");
                
    cl1.metodo1();
        }
        
        public static 
    void main (String [] arg)
        {
            
    Class2 cl2 = new Class2 ();
            
    cl2.metodo2();    
        }

    "Ethics are to me something private. Whenever you use it as an argument for why somebody_else should do something, you’re no longer being ethical, you’re just being a sanctimonious dick-head"
    Linus Torvalds

  5. #5
    Originariamente inviato da Pastore12
    volevi solo che date 2 classi A e B (iniziale maiuscola, sempre per le classi!!!) la classe A potesse accedere a un metodo di B?
    ........ e la classe B acceda ai metodi di A

  6. #6
    Originariamente inviato da Pastore12
    Ma ti rendi conto che hai creato un codice che neppure io riesco a capire???
    Mi ha fatto moolt ridere. lol

  7. #7
    Utente di HTML.it L'avatar di Pastore12
    Registrato dal
    Oct 2008
    Messaggi
    1,051
    e la classe B acceda ai metodi di A
    Beh.. fa lo stesso...

    Mi ha fatto moolt ridere.
    Ma tu sei stato davvero bravo...

    Comunque sia, spero il codice sopra ti sia di ispirazione..
    "Ethics are to me something private. Whenever you use it as an argument for why somebody_else should do something, you’re no longer being ethical, you’re just being a sanctimonious dick-head"
    Linus Torvalds

  8. #8
    grazie.
    ti farò sapere...

  9. #9

    Re: metodi

    Mi dici come sei riuscito a far compilare il tuo codice?
    Ci sono alcuni errori...


    Codice PHP:
    public class class1{
    private 
    class2 cl2;
       public 
    class1(){
            
    cl2 = new class2();
       }

       
    cl2.metodo2();     <----- Chiamata non valida in questo punto
       
    public metodo1(){     <----- Manca il tipo di ritorno del metodo
              System
    .out.print("ciao");
        }
    }


    public class 
    class2{
    private 
    class1 cl1;
       public 
    class2(){
            
    cl1 = new class1();
       }

       
    cl1.metodo1();     <----- Chiamata non valida in questo punto
       
    public metodo2(){     <----- Manca il tipo di ritorno del metodo
              System
    .out.print("ciao");
        }

    Al mio segnale... scatenate l'inferno!

  10. #10

    Re: Re: metodi

    Originariamente inviato da R@ve M@ster
    Mi dici come sei riuscito a far compilare il tuo codice?
    Ci sono alcuni errori...


    Codice PHP:
    public class class1{
    private 
    class2 cl2;
       public 
    class1(){
            
    cl2 = new class2();
       }

       
    cl2.metodo2();     <----- Chiamata non valida in questo punto
       
    public metodo1(){     <----- Manca il tipo di ritorno del metodo  //dimenticanza
              
    System.out.print("ciao");
        }
    }


    public class 
    class2{
    private 
    class1 cl1;
       public 
    class2(){
            
    cl1 = new class1();
       }

       
    cl1.metodo1();     <----- Chiamata non valida in questo punto
       
    public metodo2(){     <----- Manca il tipo di ritorno del metodo //dimenticanza
              
    System.out.print("ciao");
        }

    questo codice era solamente di esempio. l'ho scritto al volo chiaramente i metodi metodo1 e metodo2 hanno nomi diversi e non fanno una semplice stampa. il mio codice era solo per spiegare il concetto

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.