"Jag skulle vilja berätta om objektinitiering. När du skapar ett objekt måste du tilldela initiala värden till dess variabler för att undvika situationen där du kommer åt ett objekt som inte har den information det behöver för att fungera korrekt."

"Låt oss överväga ett filobjekt. Den minsta nödvändiga informationen för en fil är dess namn. Det skulle vara absurt att skapa en namnlös fil. "

"Anta att vi skriver en MyFile-klass för att arbeta med filer. Vilken information skulle behövas för varje objekt?"

"Namnet på filen som är associerad med objektet?"

"Det stämmer. För att göra detta lägger vi till metoden initialize () i vår klass. Så här ser det ut."

Exempel:
class MyFile
{
    private String filename = null;

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

"Vi lade till initialiseringsmetoden för att göra det möjligt att arbeta med objektet genom att anropa metoden. Vi kan anropa objektets metoder direkt efter att ha anropat initialiseringsmetoden. Om vi ​​inte kan arbeta med ett objekt kallar vi det invalid ; annars, vi säger att objektet är giltigt . Initieringsmetodens huvuduppgift är att ta emot all data som ett objekt behöver för att göra det giltigt. "

"Jag förstår."

"Låt oss nu göra vår uppgift svårare. Eller, vid närmare eftertanke, lättare. Beror på hur du ser på det. Anta att en programmerare som använder vår klass skulle tycka att det är bekvämare att skicka bara filens katalog och kortnamn istället för dess fullständiga sökväg. Vi skulle kunna skapa en annan initialiseringsmetod ( Java låter oss skapa flera metoder med identiska namn ) för att låta programmeraren göra detta. Så här skulle vår klass se ut:"

Exempel med två 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 sak till: vi behöver ofta skapa en tillfällig kopia av en fil bredvid den nuvarande."

"Kan vi skapa en metod för att göra detta?"

"Visst. Titta."

Skapa en kopia bredvid den aktuella filen:
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;
    }}

"Och jag kan göra så många av dessa metoder som jag vill?"

"Tja, inom rimliga gränser. Men tekniskt sett, ja, så många du vill."

"När måste jag anropa initialiseringsmetoden?"

"Omedelbart efter att du skapat objektet, för att göra det giltigt."

Exempel:
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
Uppgift
Java Syntax,  nivålektion
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.

"Vad är den här getFolder()-metoden?"

"Vi har faktiskt inte visat koden här. Den representerar en metod som returnerar en sträng med namnet på mappen där vår fil är lagrad."