"Jeg vil gjerne fortelle deg om objektinitialisering. Når du oppretter et objekt, må du tilordne initialverdier til variablene for å unngå situasjonen der du får tilgang til et objekt som ikke har informasjonen det trenger for å fungere riktig."

"La oss vurdere et filobjekt. Den minste nødvendige informasjonen for en fil er navnet. Det ville være absurd å lage en navnløs fil. "

"Anta at vi skriver en MyFile-klasse for å jobbe med filer. Hvilken informasjon vil være nødvendig for hvert objekt?"

"Navnet på filen knyttet til objektet?"

"Det stemmer. For å gjøre dette legger vi til initialize ()-metoden til klassen vår. Slik ser det ut."

Eksempel:
class MyFile
{
    private String filename = null;

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

"Vi la til initialiseringsmetoden for å gjøre det mulig å jobbe med objektet ved å kalle metoden. Vi kan kalle objektets metoder umiddelbart etter å ha kalt initialiseringsmetoden. Hvis vi ikke kan jobbe med et objekt, kaller vi det ugyldig ; ellers, vi sier at objektet er gyldig . Initialiseringsmetodens hovedoppgave er å motta alle dataene som et objekt krever for å gjøre det gyldig .

"Jeg skjønner."

"La oss nå gjøre oppgaven vår vanskeligere. Eller, ved nærmere ettertanke, enklere. Avhenger av hvordan du ser på det. Anta at en programmerer som bruker klassen vår ville finne det mer praktisk å sende bare filens katalog og korte navn i stedet for den fullstendige banen. Vi kan lage en annen initialiseringsmetode ( Java lar oss lage flere metoder med identiske navn ) for å la programmereren gjøre dette. Slik ser klassen vår ut:"

Eksempel med to initialiseringsmetoder :
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;
    }

…
}

"En ting til: vi trenger ofte å lage en midlertidig kopi av en fil ved siden av den gjeldende."

"Kan vi lage en metode for å gjøre dette?"

"Jada. Se."

Lag en kopi ved siden av gjeldende fil:
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;
    }

…
}

"Og jeg kan lage så mange av disse metodene jeg vil?"

"Vel, innenfor rimelighetens grenser. Men teknisk sett, ja, så mange du vil."

"Når må jeg kalle initialiseringsmetoden?"

"Umiddelbart etter å ha opprettet objektet, for å gjøre det gyldig."

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

"Hva er denne getFolder()-metoden?"

"Vi har faktisk ikke vist koden her. Den representerer en metode som returnerer en streng med navnet på mappen der filen vår er lagret."