"Ik wil je iets vertellen over objectinitialisatie. Wanneer je een object maakt, moet je beginwaarden toewijzen aan de variabelen om te voorkomen dat je toegang krijgt tot een object dat niet over de informatie beschikt die het nodig heeft om correct te werken."

"Laten we eens kijken naar een File-object. De minimaal noodzakelijke informatie voor een bestand is de naam. Het zou absurd zijn om een ​​naamloos bestand te maken. "

"Stel dat we een MyFile-klasse schrijven om met bestanden te werken. Welke informatie zou nodig zijn voor elk object?"

"De naam van het bestand dat aan het object is gekoppeld?"

"Dat klopt. Om dit te doen, voegen we de initialize () methode toe aan onze klasse. Zo ziet het eruit."

Voorbeeld:
class MyFile
{
    private String filename = null;

    public void initialize(String name)
    {
        this.filename = name;
    }
…
}

"We hebben de initialisatiemethode toegevoegd om het mogelijk te maken om met het object te werken door de methode aan te roepen. We kunnen de methoden van het object onmiddellijk na het aanroepen van de initialisatiemethode aanroepen. Als we niet met een object kunnen werken, noemen we het ongeldig ; anders, we zeggen dat het object geldig is . De hoofdtaak van de initialisatiemethode is om alle gegevens te ontvangen die een object nodig heeft om het geldig te maken. "

"Ik zie."

"Laten we onze taak nu moeilijker maken. Of, bij nader inzien, gemakkelijker. Hangt ervan af hoe je het bekijkt. Stel dat een programmeur die onze klasse gebruikt, het handiger zou vinden om alleen de directory en de korte naam van het bestand door te geven in plaats van het volledige pad. We zouden een andere initialisatiemethode kunnen maken ( met Java kunnen we verschillende methoden met identieke namen maken ) om de programmeur dit te laten doen. Zo zou onze klas eruit zien:"

Voorbeeld met twee initialisatiemethoden :
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;
    }

…
}

"Nog één ding: we moeten vaak een tijdelijke kopie van een bestand naast het huidige maken."

"Kunnen we een methode maken om dit te doen?"

"Natuurlijk. Kijk."

Maak een kopie naast het huidige bestand:
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;
    }

…
}

"En ik kan zoveel van deze methodes maken als ik wil?"

'Nou, binnen redelijke grenzen. Maar technisch gezien, ja, zoveel als je wilt.'

"Wanneer moet ik de initialisatiemethode aanroepen?"

"Onmiddellijk na het maken van het object, om het geldig te maken."

Voorbeelden:
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();

"Wat is deze methode getFolder()?"

"We hebben de code hier niet echt getoond. Het vertegenwoordigt een methode die een string retourneert met de naam van de map waarin ons bestand is opgeslagen."