"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ă."

Exemplu:
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ă:"

Exemplu cu două metode de inițializare :
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."

Creați o copie lângă fișierul curent:
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:
MyFile file = new MyFile();
file.initialize("c:\data\a.txt");

String text = file.readText();
MyFile file = new MyFile();
file.initialize("c:\data\", "a.txt");

String text = file.readText();
MyFile file = new MyFile();
file.initialize("c:\data\a.txt");

MyFile file2 = new MyFile();
file2.initialize("a.txt");

String text = file2.readText();

„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.”