Indice del forum Olimpo Informatico
I Forum di Zeus News
Leggi la newsletter gratuita - Attiva il Menu compatto
 
 FAQFAQ   CercaCerca   Lista utentiLista utenti   GruppiGruppi   RegistratiRegistrati 
 ProfiloProfilo   Messaggi privatiMessaggi privati   Log inLog in 

    Newsletter RSS Facebook Twitter Contatti Ricerca
* [java]aiuto con i costruttori
Nuovo argomento   Rispondi    Indice del forum -> Programmazione
Precedente :: Successivo  
Autore Messaggio
mdweb
Dio maturo
Dio maturo


Registrato: 18/12/07 15:59
Messaggi: 4412

MessaggioInviato: 03 Apr 2008 13:03    Oggetto: * [java]aiuto con i costruttori Rispondi citando

Ciao a tutti ho un problema.Sto studiando JAVA .
Ciao puoi darmi un aiuto non ho capito una cosa:
A cosa servono i costruttori?E' un argomento che non ho capito bene adesso ti riporto qualche esempio:

Codice:

public class Punto{
public Punto
{
x=a;
y=b;
}
public int x;
public int y;
}


se io scrvo cosi:
Codice:


Punto punto1=new Punto();

perchè non funziona?

Ma il costruttore PRende il nome della classe.Ma quale classe?
Il nome del file?
Oppure quella classe che indica l'insieme di oggetti?
Top
Profilo Invia messaggio privato
SverX
Supervisor Macchinisti
Supervisor Macchinisti


Registrato: 25/03/02 11:16
Messaggi: 11568
Residenza: Tokelau

MessaggioInviato: 03 Apr 2008 14:31    Oggetto: Re: [java]aiuto con i costruttori Rispondi citando

mdweb ha scritto:
A cosa servono i costruttori? E' un argomento che non ho capito bene


Ti invito a rileggere bene, allora, perchè è un concetto basilare. Ti dirò solo che quando definisci una classe descrivi come sarà fatto uno specifico oggetto... che però non esisterà finchè non l'avrai istanziato. Durante questa operazione, appunto, viene eseguito il costruttore.

Ciao
Top
Profilo Invia messaggio privato HomePage
mdweb
Dio maturo
Dio maturo


Registrato: 18/12/07 15:59
Messaggi: 4412

MessaggioInviato: 03 Apr 2008 17:04    Oggetto: Rispondi citando

quindi anche s eio non metto uno costruttore....lo metto automaticamente la JVM?O NO?
Top
Profilo Invia messaggio privato
freemind
Supervisor sezione Programmazione
Supervisor sezione Programmazione


Registrato: 04/04/07 20:28
Messaggi: 4643
Residenza: Internet

MessaggioInviato: 03 Apr 2008 19:59    Oggetto: Rispondi citando

Ciao
Premetto che non programmo in java (per ora).
Io credo che il tuo problema siano quelle due var a e b che non hai mai definito.

Dal tuo esempio credo che tu volessi fare una cosa del tipo:
Codice:

public class Punto{
public Punto(int a,int b)   // <-- Nota i parametri formali!!!!
{
x=a;
y=b;
}
public int x;
public int y;
}


e a questo punto:
Codice:

Punto punto1=new Punto(5,10);   // Nota i parametri attuali!!!


JAVA (come quasi tutti i compilatori C++) prevede che una classe abbia sempre un costruttore e se non lo definisci tu, lo mette java stesso.
Il costruttore messo da java si chiama costruttore di default e di fatto non fa nulla.

Il costruttore serve ad inizializzare l'oggetto istanziato. Con JAVA devi avere la certezza dell'inizializzazione per cui il costruttore di default inizializza le var membro ai valori di default delle stesse (per gli interi credo che sia 0).

Tu puoi definire uno o più costruttori e a quel punto gli fai fare quello che vuoi.

Appena un oggetto viene istanziato l'interprete esegue subito il costruttore,se non c'è chiama quello di default, se c'è ne uno solo chiama quello altrimenti in base ai parametri formali esegue quello corrispondente. (Questa cosa è possibile tramite l'overloading dei metodi, ossia due metodi possono avere lo stesso nome se hanno almeno un parametro formale diverso)

Se la tua classe Punto fosse:
Codice:

public class Punto
{
public Punto(int a)
{
x=a;
y=0;
}
public Punto(int a,int b)   // <-- Nota i parametri formali!!!!
{
x=a;
y=b;
}
public int x;
public int y;
}


Quando tu scrivi
Codice:
Punto punto1=new Punto(4);

viene chiamato il primo costruttore; con:
Codice:
Punto punto1=new Punto(4,9);

viene chiamato il secondo.

Ricorda che il costruttore di default viene aggiunto se e solo se tu non ne definisci.

Ad esempio le seguenti due classi sono identiche:
Codice:

public class Pippo
{
public Pippo()
{
// sto coso non fa nulla
}
}

public class Pippo
{
// Qui è come se ci fosse il costruttore della versione precedente
}

Top
Profilo Invia messaggio privato
mdweb
Dio maturo
Dio maturo


Registrato: 18/12/07 15:59
Messaggi: 4412

MessaggioInviato: 04 Apr 2008 15:51    Oggetto: Rispondi

freemind ha scritto:
Ciao
Premetto che non programmo in java (per ora).
Io credo che il tuo problema siano quelle due var a e b che non hai mai definito.

Dal tuo esempio credo che tu volessi fare una cosa del tipo:
Codice:

public class Punto{
public Punto(int a,int b)   // <-- Nota i parametri formali!!!!
{
x=a;
y=b;
}
public int x;
public int y;
}


e a questo punto:
Codice:

Punto punto1=new Punto(5,10);   // Nota i parametri attuali!!!


JAVA (come quasi tutti i compilatori C++) prevede che una classe abbia sempre un costruttore e se non lo definisci tu, lo mette java stesso.
Il costruttore messo da java si chiama costruttore di default e di fatto non fa nulla.

Il costruttore serve ad inizializzare l'oggetto istanziato. Con JAVA devi avere la certezza dell'inizializzazione per cui il costruttore di default inizializza le var membro ai valori di default delle stesse (per gli interi credo che sia 0).

Tu puoi definire uno o più costruttori e a quel punto gli fai fare quello che vuoi.

Appena un oggetto viene istanziato l'interprete esegue subito il costruttore,se non c'è chiama quello di default, se c'è ne uno solo chiama quello altrimenti in base ai parametri formali esegue quello corrispondente. (Questa cosa è possibile tramite l'overloading dei metodi, ossia due metodi possono avere lo stesso nome se hanno almeno un parametro formale diverso)

Se la tua classe Punto fosse:
Codice:

public class Punto
{
public Punto(int a)
{
x=a;
y=0;
}
public Punto(int a,int b)   // <-- Nota i parametri formali!!!!
{
x=a;
y=b;
}
public int x;
public int y;
}


Quando tu scrivi
Codice:
Punto punto1=new Punto(4);

viene chiamato il primo costruttore; con:
Codice:
Punto punto1=new Punto(4,9);

viene chiamato il secondo.

Ricorda che il costruttore di default viene aggiunto se e solo se tu non ne definisci.

Ad esempio le seguenti due classi sono identiche:
Codice:

public class Pippo
{
public Pippo()
{
// sto coso non fa nulla
}
}

public class Pippo
{
// Qui è come se ci fosse il costruttore della versione precedente
}


preciso come sempre! Wink
Top
Profilo Invia messaggio privato
Mostra prima i messaggi di:   
Nuovo argomento   Rispondi    Indice del forum -> Programmazione Tutti i fusi orari sono GMT + 1 ora
Pagina 1 di 1

 
Vai a:  
Non puoi inserire nuovi argomenti
Non puoi rispondere a nessun argomento
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi votare nei sondaggi