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

"Нека разгледаме 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();
2
Задача
Java Syntax,  нивоурок
Заключено
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.

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

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