„Бих искал да ви разкажа за инициализацията на обект. Когато създавате обект, трябва да присвоите начални стойности на неговите променливи, за да избегнете ситуацията, в която имате достъп до обект, който няма необходимата информация, за да работи правилно.“
"Нека разгледаме File обект. Минималната необходима информация за файл е неговото име. Би било абсурдно да се създаде файл без име. "
"Да предположим, че напишем клас MyFile за работа с файлове. Каква информация ще е необходима за всеки обект?"
„Името на file, свързан с обекта?“
"Точно така. За да направим това, добавяме метода initialize () към нашия клас. Ето How изглежда."
class MyFile
{
private String filename = null;
public void initialize(String name)
{
this.filename = name;
}
…
}
„Добавихме метода за инициализация , за да направим възможно работата с обекта чрез извикване на метода. Можем да извикаме методите на обекта веднага след извикването на метода за инициализация. Ако не можем да работим с обект, ние го наричаме невалиден ; в противен случай, ние казваме, че обектът е валиден . Основната задача на метода за инициализация е да получи всички данни, които обектът изисква, за да стане валиден. "
"Виждам."
„Сега нека направим задачата си по-трудна. Или, като се замислим, по-лесна. Зависи от начина, по който го гледате. Да предположим, че програмист, използващ нашия клас, ще намери за по-удобно да предаде само директорията и краткото име на file instead of пълния му път. Можем да създадем друг метод за инициализация ( Java ни позволява да създадем няколко метода с еднакви имена ), за да позволим на програмиста да направи това. Ето How ще изглежда нашият клас:"
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;
}
…
}
„Още нещо: често трябва да създадем временно копие на файл до текущия.“
„Можем ли да създадем метод за това?“
"Разбира се. Виж."
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;
}
…
}
„И мога да направя колкото си поискам от тези методи?“
— Е, в рамките на разумното. Но технически погледнато, да, колкото искаш.
„Кога трябва да извикам метода за инициализация?“
„Веднага след създаването на обекта, за да стане валиден.“
Примери: |
---|
|
|
|
„Какво представлява този метод getFolder()?“
„Всъщност не сме показали codeа тук. Той представлява метод, който връща низ с името на папката, където се съхранява нашият файл.“
GO TO FULL VERSION