Instantiating objects in Java [closed]

1

Sto imparando ora Java da zero e quando ho iniziato a imparare a creare istanze di oggetti, non capisco - in quali casi devo istanziare oggetti? Ad esempio sto studiando dal corso TutsPlus su di esso e c'è un esempio sulla classe "Rectangle". L'istruttore dice che deve essere istanziato. Così ho iniziato a dubitare - quando devo istanziare quegli oggetti durante la scrittura del codice Java?

    
posta devvy 22.08.2014 - 21:33
fonte

2 risposte

5

Se provieni da uno sfondo in linguaggi di programmazione dinamici o di programmazione generale, la parola chiave new può essere un po 'confusa, specialmente in linguaggi che non sembrano richiedere sempre l'uso. In Java non è raro vedere un codice come questo:

User user = ApplicationEnvironment.getCurrentUser();
String username = user.getName();
int maxLength = 255;
String message = new String("Current logged in user is: " + username);

Hm, 4 variabili e solo una deve essere utilizzata con new ? Cosa sta succedendo qui?

La chiave è comprendere la creazione di un oggetto rispetto al passaggio di un riferimento a un oggetto già esistente.

Quando chiamiamo new String("I'm a new string!") chiediamo al computer di creare un nuovo oggetto String in memoria e di restituirci un riferimento, e di solito assegneremo quel riferimento a una variabile (come abbiamo fatto con l'ultima riga nel mio esempio.

Quindi perché nessuno degli altri esempi richiede la nuova parola chiave?

Bene, con la linea int è un po 'strano - è un "primitivo", e un primitivo non è un "oggetto" e non ha bisogno della parola chiave new di sempre. All'inizio è fonte di confusione, ma se ti ricordi che new si applica solo agli oggetti e non ai primitivi, starai bene. Puoi capire esattamente il motivo per cui è così, ma starai bene a premere se non capisci il perché - solo che è così che funziona in Java per ora.

Ora, con la variabile user e username la storia è completamente diversa.

Quello che sta succedendo è che un oggetto è stato creato con la nuova parola chiave da qualche altra parte , e stiamo solo ottenendo un riferimento a un oggetto che qualche altro codice invisibile ha creato per noi!

Quindi, la nuova parola chiave è quando vogliamo dire al computer "Ho bisogno di un oggetto completamente nuovo creato e salvato in memoria, per favore". Quando assegniamo solo "riferimenti" a oggetti esistenti a variabili diverse non abbiamo bisogno di nuovi!

Ora, questo dovrebbe farti chiedere "che cos'è esattamente un riferimento?" Quale è esattamente ciò che un buon corso dovrebbe spiegarti in seguito. Ci arriverai se ti infili!

Per ora, la regola da imparare è:

  1. Se hai bisogno di un NUOVO oggetto, avrai bisogno della nuova parola chiave.
  2. Se hai bisogno di un riferimento a un oggetto esistente - uno già esistente esiste o che un altro codice creerà per te, quindi non lo farai.
risposta data 22.08.2014 - 22:04
fonte
1

Nella programmazione orientata agli oggetti, una classe è un costrutto che definisce una raccolta di proprietà e metodi. Può essere visto come un modello. Ad esempio, nel tuo caso Rectangle. Quindi abbiamo l'istanza della classe che condivide la struttura comune definita dalla classe. Questa struttura comune consiste delle proprietà (può essere la lunghezza, la larghezza e il colore) e dei metodi (metodi come; getArea (), ruotare () nell'esempio precedente) della classe. Tuttavia, le proprietà di oggetti diversi sono diverse.

Perché ne hai bisogno:

Senza creare oggetti per una classe, non c'è alcun uso della classe. Ad esempio, devi solo creare una classe Rectangle, non c'è alcun uso di quella classe nel tuo programma. Ma quando inizi a modellare la tua soluzione in termini di classi, modellerai in termini di oggetti come rettangolo1, rettangolo2 e così via, sarebbe il modello reale del dominio su cui stai lavorando.

    
risposta data 22.08.2014 - 22:03
fonte

Leggi altre domande sui tag