"Jeg vil gerne fortælle dig om objektinitialisering. Når du opretter et objekt, skal du tildele initialværdier til dets variabler for at undgå den situation, hvor du får adgang til et objekt, der ikke har den information, det skal bruge for at fungere korrekt."

"Lad os overveje et filobjekt. Den mindst nødvendige information for en fil er dens navn. Det ville være absurd at oprette en navnløs fil. "

"Antag, at vi skriver en MyFile-klasse til at arbejde med filer. Hvilken information ville være nødvendig for hvert objekt?"

"Navnet på den fil, der er knyttet til objektet?"

"Det er rigtigt. For at gøre dette tilføjer vi initialize () metoden til vores klasse. Sådan ser det ud."

Eksempel:
class MyFile
{
    private String filename = null;

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

"Vi tilføjede initialiseringsmetoden for at gøre det muligt at arbejde med objektet ved at kalde metoden. Vi kan kalde objektets metoder umiddelbart efter at have kaldt initialiseringsmetoden. Hvis vi ikke kan arbejde med et objekt, kalder vi det ugyldigt ; ellers, vi siger, at objektet er gyldigt . Initialiseringsmetodens hovedopgave er at modtage alle de data, som et objekt kræver for at gøre det gyldigt. "

"Jeg ser."

"Lad os nu gøre vores opgave sværere. Eller, ved nærmere eftertanke, lettere. Afhænger af, hvordan du ser på det. Antag, at en programmør, der bruger vores klasse, ville finde det mere bekvemt kun at videregive filens mappe og korte navn i stedet for dens fulde sti. Vi kunne oprette en anden initialiseringsmetode ( Java lader os oprette flere metoder med identiske navne ) for at lade programmøren gøre dette. Sådan ville vores klasse se ud:"

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 mere: Vi har ofte brug for at oprette en midlertidig kopi af en fil ved siden af ​​den nuværende."

"Kan vi lave en metode til at gøre dette?"

"Selvfølgelig. Se."

Opret en kopi ved siden af ​​den aktuelle 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 lave så mange af disse metoder, som jeg vil?"

"Nå, inden for rimelighedens grænser. Men teknisk set, ja, så mange du vil."

"Hvornår skal jeg kalde initialiseringsmetoden?"

"Umiddelbart efter oprettelse af objektet, for at gøre det gyldigt."

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();
2
Opgave
Java Syntax,  niveaulektie
Låst
Code entry
Sometimes you don't need to think, you just need to hammer it out! As paradoxical as it may seem, sometimes your fingers will "remember" better than your conscious mind. That's why while training at the secret CodeGym center you will sometimes encounter tasks that require you to enter code. By entering code, you get used to the syntax and earn a little dark matter. What's more, you combat laziness.

"Hvad er denne getFolder()-metode?"

"Vi har faktisk ikke vist koden her. Det repræsenterer en metode, der returnerer en streng med navnet på den mappe, hvor vores fil er gemt."