I membri "di istanza" (non static) sono associati a ciascuna istanza della classe. Vuol dire che ciascun oggetto ha i suoi campi di istanza e i metodi di istanza che possono operare su di essi.
I membri "di classe" (static) sono associati alla classe e sono unici, per così dire "globali", indipendentemente da quanti oggetti hai creato di quella classe. Poche volte servono, per certi tipi di design oppure per definire delle "costanti".
Quindi dimentica un pochino lo "static", pensa a cosa ciascun oggetto di quella classe deve avere e quindi definisci i campi di istanza (non static), preferibilmente private e poi mettendo i metodi "accessori" getter/setter (non static) public.
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
ora capisco perchè avveniva quel errore ,
adesso invece ho un problema nel frame il comando get mi da errore ,
qual'è l'errore che commetto?
Ps ti sono infinitamente grato per la spiegazione che non ne venivo a capo
//saldo conto
if(Conto.getPin().equals(MyFrame.getTesto())){
this.saldot= Conto.getSaldo();
System.out.println(saldot);
}
if(ContoArancio.getPinarancio().equals(MyFrame.get Testo())){
this.saldot= ContoArancio.getSaldo();
System.out.println(saldot);
}
MyFrame è una classe e getTesto() deve quindi essere per forza un metodo statico. E ci risiamo, non va bene. Le problematiche qui vedo che sono più che altro sui concetti della programmazione ad oggetti, che dovresti acquisire meglio. Se continui a mettere static di qua e di là risolvi solo in parte (e comunque male) le cose. Serve una visione migliore su come "disegnare" le classi a livello di struttura e architettura.![]()
Ultima modifica di andbin; 18-06-2016 a 14:03
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
La cosa ovvia da notare è che MyFrame lo istanzi nel main e la variabile x è locale al main. Quindi nessun'altro ha il riferimento al MyFrame. Ma non è tanto questo il punto/problema.
Se hai una interfaccia grafica, essa va "avanti" per eventi. Quindi: quando è ed a seguito di cosa che devi far interagire la interfaccia con le due classi dei conti?
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
dal textfield prendo i pin che mi indirizzano sui conti(gia da qui ho il mio problema dello static (il pin e statico)
public class MyFrame extends Frame implements ActionListener{
private Color c=new Color(255,255,0);
private Button b=null;
private Button in=null;
public TextField p = null;
public static String testo =null;
static private int contatorePin=0;
public MyFrame(String t)
{
super(t);
this.setLayout(null);//elimina i gestori di layout
setVisible(true);
setSize(500,500);
setLocation(400,350);
setBackground(c);
b=new Button("chiudi");
b.setSize(70,30);
b.setLocation(230,270);
b.addActionListener(this);
in=new Button("invio");
in.setSize(70, 30);
in.setLocation(230, 200);
in.addActionListener(this);
p = new TextField();
p.setSize(100, 40);
p.setLocation(215, 140);
add(p);
add(b);
add(in);
}
@Override
public void actionPerformed(ActionEvent event) {
if(event.getSource()==b){
System.exit(0);
}
if (event.getSource() ==in){
contatorePin++;
testo =p.getText();
if(Conto.getPin().equals(testo)){
this.dispose();
MyFrame2 fin = new MyFrame2("prelievo e deposito");
}
if(ContoArancio.getPinarancio().equals(testo)){
this.dispose();
MyFrame2 fine = new MyFrame2("prelievo e deposito");
}
p.setText("pin non valido");
if(contatorePin==3){
System.exit(0);
}
}
}
public static String getTesto() {
return testo;
}
}