„Бих искал да ви разкажа за инициализацията на обект. Когато създавате обект, трябва да присвоите начални стойности на неговите променливи, за да избегнете ситуацията, в която имате достъп до обект, който няма необходимата информация, за да работи правилно.“

"Нека разгледаме 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;
    }}

„И мога да направя колкото си поискам от тези методи?“

— Е, в рамките на разумното. Но технически погледнато, да, колкото искаш.

„Кога трябва да извикам метода за инициализация?“

„Веднага след създаването на обекта, за да стане валиден.“

Примери:
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();

„Какво представлява този метод getFolder()?“

„Всъщност не сме показали codeа тук. Той представлява метод, който връща низ с името на папката, където се съхранява нашият файл.“