"Aș dori să vă spun despre inițializarea obiectului. Când creați un obiect, trebuie să atribuiți valori inițiale variabilelor sale pentru a evita situația în care accesați un obiect care nu are informațiile necesare pentru a funcționa corect."
„Să luăm în considerare un obiect File. Informația minimă necesară pentru un fișier este numele acestuia. Ar fi absurd să creăm un fișier fără nume. ”
„Să presupunem că scriem o clasă MyFile pentru a lucra cu fișiere. Ce informații ar fi necesare pentru fiecare obiect?”
„Numele fișierului asociat cu obiectul?”
"Așa este. Pentru a face acest lucru, adăugăm metoda initialize () la clasa noastră. Așa arată."
class MyFile
{
private String filename = null;
public void initialize(String name)
{
this.filename = name;
}
…
}
„Am adăugat metoda initialize pentru a face posibilă lucrul cu obiectul apelând metoda. Putem apela metodele obiectului imediat după apelarea metodei initialize. Dacă nu putem lucra cu un obiect, îl numim invalid ; în caz contrar, spunem că obiectul este valid . Sarcina principală a metodei de inițializare este de a primi toate datele necesare unui obiect pentru a-l face valid. "
"Înțeleg."
„Acum, să ne facem sarcina mai grea. Sau, gândindu-mă a doua, mai ușoară. Depinde cum o priviți. Să presupunem că un programator care folosește clasa noastră ar găsi mai convenabil să treacă doar directorul fișierului și numele scurt în loc de calea completă. Am putea crea o altă metodă de inițializare ( Java ne permite să creăm mai multe metode cu nume identice ) pentru a permite programatorului să facă asta. Iată cum ar arăta clasa noastră:"
class MyFile
{
private String filename = null;
public void initialize(String name)
{
this.filename = name;
}
public void initialize(String folder, String name)
{
this.filename = folder + name;
}
…
}
„Încă un lucru: de multe ori trebuie să creăm o copie temporară a unui fișier lângă cel actual.”
„Putem crea o metodă pentru a face asta?”
"Sigur. Uite."
class MyFile
{
private String filename = null;
public void initialize(String name)
{
this.filename = name;
}
public void initialize(String folder, String name)
{
this.filename = folder + name;
}
// The filename will be stored in the same directory as file.
public void initialize(MyFile file, String name)
{
this.filename = file.getFolder() + name;
}
…
}
— Și pot face câte metode vreau eu?
— Ei bine, în limita rațiunii. Dar tehnic vorbind, da, câte vrei tu.
„Când trebuie să apelez metoda de inițializare?”
„Imediat după crearea obiectului, pentru a-l face valabil”.
Exemple: |
---|
|
|
|
„Ce este această metodă getFolder()?”
„Nu am arătat codul aici. Acesta reprezintă o metodă care returnează un șir cu numele folderului în care este stocat fișierul nostru.”
GO TO FULL VERSION