Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    220

    [JAVA] passaggio di attributo tra 2 classi

    bene bene ragassi, sono sommerso nella c.... per l'altra questione degli eventi ma non mi dimentico gli altri problemini ehehe!!!
    dunque: io dalla mia classe A devo passare un certa variabile alla B:

    codice:
    public class A{
      private B b=new B();;
    
      public void setField(int val){
        b.setField(val);
      }
    }
    
    public class B{
      private int field;
    
      public void setField(int val){
        field=val;
      }
    }
    capito come ho fatto? nella precedente implementazione la classe B era interna alla A e quindi bastava che dall'esterno richiamassi setField di A e passavo direttamente il valore a B. ma ora che le classi sono separate in file diversi sono stato costretto a scrivere 2 metodi uguali e richiamarne uno all'interno dell'altro!! e non mi piace!! esiste una maniera più elegante per passare dei valori tra classi?
    io vorrei che field fosse privilegiato, come se B estendesse A e field fosse dichiarato protected...è possibile?

  2. #2
    Utente di HTML.it L'avatar di netarrow
    Registrato dal
    Apr 2004
    Messaggi
    1,425
    Se il tuo intento è accedere da una superclasse a i campi di una sottoclasse non puoi farlo, visto che di sotto classi possono essercene più versioni, solo una sottoclasse può accedere alla superclasse visto che la super classe è "determinata". Per ovviare a questo potresti usare la riflessione, soluzione di skill, magari non elegante, ma non penso possa interessarti.

    Piuttosto inverti le parti:

    codice:
    public class A {
      protected int field;
    
      protected void setField(int val){
        field=val;
      }
    }
    
    public class B extends A {
    
    [...]
    
    }
    questo se ho capito bene il tuo problema. poi dipende dalla relazione che lega A e B, "is a" o "has a"?

    Imparare è un'esperienza, tutto il resto è solo informazione. (Albert Einstein)

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    724
    Il modificatore protected controlla la visibilità di metodi e variabili definiti in una classe, rispetto alle altre classi.
    Esso offre un livello di protezione intermedio tra private e public.
    Protected è una relazione tra una classe e le sue sottoclassi (presenti e future).

    I metodi e le variabili definiti protected, in una classe, sono accessibili dalle sottoclassi, e dalle classi che fanno parte dello stesso package.

    Accanto al modificatore protected esiste anche il modificatore private protected che consente l'accesso solo alle sottoclassi.

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    220
    no vedete...A e B non sono legate da relazioni di ereditarietà: semplicemente A contiene al suo interno un'istanza di B.

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    724
    codice:
    public class A {
      public A(){
      
         B b=new B();
      int x=0;
      b.setField(x);
        
    }
    }
    
    public class B {
      private int field;
     
       public void setField(int val){
         field=val;
    
    }
     }

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    220
    si ma field viene passata ad A dall'esterno...uhm credo che non sia possibile fare in altro modo!! :master:

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