Створення об’єкта JAVA ДЛЯ ANDROID

&nbsp

Новий обєкт, екземпляр певного класу, створюється за допомогою ключового слова new:

Trivial trivial = new TrivialO:

Зліва від оператора присвоювання = в цьому твердженні визначається змінна, яка називається trivial Ця змінна має тип Trivial, тому їй можуть бути присвоєні лише обєкти типу Trivial У правій частині затвердження присвоювання відбувається виділення памяті для нового екземпляра класу Trivial і инициализируется екземпляр Оператор присвоювання привласнює змінної посилання на щойно створений обєкт

Визначення ctr в Trivial є абсолютно безпечним, незважаючи на те, що явною ініціалізації не відбувається У Java гарантується, що ця змінна буде инициализирована зі значенням 0, а також те, що всі поля автоматично инициализируются при створенні обєкта: bool ЄАП инициализируется зі значенням false, числові примітивні типи – зі значенням 0, а всі обєктні типи – зі значенням nul 1

Можна і більшою мірою контролювати ініціалізацію обєкта, додавши до визначення його класу конструктор Визначення конструктора виглядає як метод, крім того, що в ньому не вказується тип що повертається змінної Імя конструктора має точно збігатися з імям конструируемого їм класу:

На практиці у кожного класу Java є конструктор Компілятор Java автоматично створює конструктор без аргументів, якщо не вказано інших конструкторів Далі, якщо конструктор не викликає автоматично небудь конструктор суперкласу, компілятор Java автоматично додає неявний виклик безаргументний конструктора суперкласу в якості самого першого твердження Визначення Trivial, дане вище (В якому відсутня явна вказівка ​​конструктора), насправді містить конструктор, який виглядає так:

Оскільки в класі LessTrivial відбувається явне визначення конструктора, Java не створює конструктор за замовчуванням автоматично Це означає, що при спробі створення обєкта LessTrivial без аргументів відбувається помилка:

Дуже важливо розрізняти дві концепції: безаргументний конструктор (no-arg constructor) і конструктор, що задається за замовчуванням (default constructor) Конструктор за замовчуванням – це такий конструктор, який Java автоматично додає до вашого класу, причому неявно і в тому випадку, якщо ви не визначаєте ніяких інших конструкторів Буває, що за замовчуванням задається і безаргументний конструктор Але, з іншого боку, безаргументний конструктор – це просто конструктор, для якого не задані ніякі параметри Клас не обовязково повинен мати безаргументний конструктор Визначати такий конструктор також не обовязково, якщо це не потрібно вам для якоїсь певної мети

Якщо клас володіє декількома конструкторами, доцільно каскадировать ці конструктори, тобто гарантувати, що фактично тільки одна копія коду инициализирует екземпляр, а всі інші конструктори його викликають Наприклад, для зручності можна додати конструктор до класу LessTrivial, щоб випадок вийшов більш стандартним:

Каскадне розташування методів – це стандартна ідіома Java для завдання певних значень за замовчуванням Весь код, який ініціалізує обєкт, знаходиться в одному самодостатньому методі або конструкторі, а інші методи або конструктори просто викликають його Особливо доцільно застосовувати таку ідіому з конструкторами, які повинні виконувати явний виклик суперконструктора

Конструктори повинні бути прості і виконувати не більше роботи, ніж необхідно для переведення обєкта в стабільне початковий стан Можна уявити собі, наприклад, конструкцію обєкта, що забезпечує зєднання з базою даних або мережею Він може створити зєднання, ініціювати його, перевірити соединяемость – і все це зробити в конструкторі На перший погляд такий підхід здається абсолютно виправданим, але на практиці у вас вийде код, якому не вистачає модульності і який погано піддається налагодженні і внесенню змін

При більш грамотному дизайні конструктор просто ініціалізує стан зєднання як закрите і передає зєднання явного методу open, що забезпечує вихід в мережу

Джерело: Android Програмування на Java для нового покоління мобільних пристроїв

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*