"Szeretnék mesélni az objektum inicializálásáról. Amikor létrehoz egy objektumot, kezdeti értékeket kell hozzárendelnie a változóihoz, hogy elkerülje azt a helyzetet, amikor olyan objektumhoz fér hozzá, amely nem rendelkezik a megfelelő működéshez szükséges információkkal."
"Vegyünk egy Fájl objektumot. A fájlhoz szükséges minimális információ a neve. Abszurd lenne névtelen fájlt létrehozni. "
"Tegyük fel, hogy írunk egy MyFile osztályt a fájlokkal való munkához. Milyen információkra lenne szükség az egyes objektumokhoz?"
"Az objektumhoz társított fájl neve?"
"Így van. Ehhez hozzáadjuk az inicializálás () metódust az osztályunkhoz. Így néz ki."
class MyFile
{
private String filename = null;
public void initialize(String name)
{
this.filename = name;
}
…
}
"Hozzáadtuk az inicializálási metódust, hogy lehetővé tegyük az objektummal a metódus meghívásával történő munkát. Az objektum metódusait az inicializálási metódus meghívása után azonnal meg tudjuk hívni. Ha nem tudunk dolgozni egy objektummal, érvénytelennek nevezzük ; egyébként Azt mondjuk , hogy az objektum érvényes
"Látom."
"Most nehezítsük meg a feladatunkat. Vagy ha jobban belegondolunk, könnyebb. Attól függ, hogyan nézzük. Tegyük fel, hogy egy programozó, aki a mi osztályunkat használja, kényelmesebbnek találná, ha csak a fájl könyvtárát és rövid nevét adja át a teljes elérési út helyett. Létrehozhatnánk egy másik inicializálási metódust ( a Java segítségével több, azonos nevű metódust is létrehozhatunk ), hogy ezt a programozó megtehesse. Így nézne ki az osztályunk:
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;
}
…
}
"Még egy dolog: gyakran kell létrehoznunk egy ideiglenes másolatot egy fájlról az aktuális mellé."
– Létrehozhatunk erre módszert?
– Persze. Nézd.
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;
}
…
}
– És ezekből a módszerekből annyit készíthetek, amennyit csak akarok?
– Nos, ésszerű keretek között. De technikailag igen, amennyit csak akar.
"Mikor kell meghívnom az inicializálási metódust?"
"Az objektum létrehozása után azonnal, hogy érvényes legyen."
Példák: |
---|
|
|
|
"Mi ez a getFolder() metódus?"
"Valójában itt nem mutattuk meg a kódot. Ez egy olyan metódus, amely egy karakterláncot ad vissza annak a mappának a nevével, ahol a fájlunk van."
GO TO FULL VERSION