Newsgroup: it.comp.java
Titolo: Capire cose basilari... su esercitazioni...

Salve, stò imparando il java e dunque ho delle esercitazioni da fare,
però no capisco ancora una cosa (spero di non essere banale) perchè
ricevo questo errore dal compilatore:
es3b.java class Persona is public, should be declared in a file named
Persona.java
Ora il codice è questo salvato in es3b.java
public class Persona
{
	public String nome;
	public String cognome;
	public int eta;
	public String dettagli()
	{
		return nome + " " + cognome + "anni" + eta;
	}
}
public class es3b
{
	public static void main(String args[])
	{
		Persona persona1 = new Persona();
		Persona persona2 = new Persona();
		persona1.nome = "Matteo";
		persona1.cognome = "Aluigi";
		persona1.eta = 22;
		System.out.println("persona1 " + persona1.dettagli());
		persona2.nome = "Maura";
		persona2.cognome = "Formica";
		persona2.eta = 21;
		System.out.println("persona2 " + persona2.dettagli());
		Persona persona3 = persona1;
		System.out.println("persona3 " + persona3.dettagli());
	}
}
se chiamo il file Persona.java mi dà il contrario cioè es3b is public,
should be declared in a file named es3b.java
Quindi come lo devo chiamare????
Grazie....

 Grazie....
fai 2 file...

 Grazie....
fai 2 file oppure usi una innerclass
public class es3b
{
  private class Persona
  {
    public String nome;
    public String cognome;
    public int eta;
    public String dettagli()
    {
      return nome + " " + cognome + "anni" + eta;
    }
  }
  public es3b()
  {
    Persona persona1 = new Persona();
    Persona persona2 = new Persona();
    persona1.nome = "Matteo";
    persona1.cognome = "Aluigi";
    persona1.eta = 22;
    System.out.println("persona1 " + persona1.dettagli());
    persona2.nome = "Maura";
    persona2.cognome = "Formica";
    persona2.eta = 21;
    System.out.println("persona2 " + persona2.dettagli());
    Persona persona3 = persona1;
    System.out.println("persona3 " + persona3.dettagli());
  }
  public static void main(String args[])
  {
    es3b start = new es3b();
  }
}

   {
Giusto per completezza rivolta a yoghi87 che deve imparare:
Un inner-class puo' essere anche public, non necessariamente private.

grazie mille... ma se volessi avere 2 file come si farebbe...

 fai 2 file oppure usi una innerclass
In realt� la classe es3b � assolutamente inutile, il metodo main pu�
essere spostato dentro alla classe Persona.
Y.

 grazie mille... ma se volessi avere 2 file come si farebbe...
emh...
mettiamo  tu abbia Persona.java e es3b.java
se sono nella stessa direcotry basta che tu faccia:
javac es3b.java
ci pensa il compilatore a compilare anche persona
poi esegui:
java es3b
finito...
michelangelo

 grazie mille... ma se volessi avere 2 file come si farebbe...
per completezza aggiungiamo anche che qualsiasi classe pu� avere un main
quindi potevi usare anche una classe sola e che oltretutto usare
variabili di istanza pubbliche non � il massimo della correttezza, a
meno che tu ad esempio non sia in condizioni particolari, ad esempio un
microdevice dove anche la chiamata ad un metodo potrebbe avere un certo
peso e alcuni oggetti di cui hai molte istanze potrebbero essere
considerati come "strutture" (no metodi solo variabili pubbliche),
inoltre se un metodo � una rappresentazione a stringa dell'oggetto puoi
sovrascrivere il metodo toString che per altro println chiama
implicitamente;
Potresti quindi nel tuo caso scrivere una cosa del genere:
public class Persona
{
  private String nome;
  private String cognome;
  private int eta;
  public String toString()
  {
    return nome + " " + cognome + " anni " + eta;
  }
  public Persona(String nome, String cognome, int eta)
  {
    this.nome = nome;
    this.cognome = cognome;
    this.eta = eta;
  }
  public static void main(String args[])
  {
    Persona persona1 = new Persona("Matteo", "Aluigi", 22);
    Persona persona2 = new Persona("Maura", "Formica", 21);
    System.out.println("persona1 " + persona1);
    System.out.println("persona2 " + persona2);
    Persona persona3 = persona1;
    System.out.println("persona3 " + persona3);
  }
}

Grazie mille a tutti!!!!!!!!