русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Тема 8 Об'єктна модель Java


Дата додавання: 2014-05-29; переглядів: 1010.


План

1 Статичні елементи

2 Ключові слова thisі super

3 Ключове слово abstract

4 Інтерфейси

 

1 Статичні елементи

До цього моменту під полями об'єкту ми завжди розуміли значення, які мають сенс тільки в контексті деякого екземпляра класу. Наприклад:

 

class Human {

private String name;

}

 

Перш ніж звернутися до поля name, необхідно отримати посилання на екземпляр класу Human.

Але бувають дані іншого характеру. Припустимо, необхідно зберігати кількість всіх людей (примірників класу Human, існуючих у системі). Зрозуміло, що загальна кількість людей не є характеристикою якоїсь однієї людини, вона відноситься до всього типу в цілому. Звідси з'являється назва «поле класу», на відміну від «поля об'єкта». Оголошуються такі поля за допомогою модифікатора static:

 

class Human {

public static int totalCount;

}

 

Щоб звернутися до такого поля, посилання на об'єкт не потрібно, цілком достатньо імені класу. Але для зручності дозволено звертатися до статичних полів і через посилання:

 

Human h = new Human ();

h.totalCount = 100;

 

Однак таке звернення конвертується компілятором.

Статичні поля також можуть бути оголошені як final, це означає, що вони повинні бути проініціалізовані суворо один раз і потім вже більше не змінювати свого значення. Аналогічно, статичні методи можуть бути оголошені як final, а це означає, що їх не можна перекривати в класах-спадкоємцях.

Для ініціалізації статичних полів можна користуватися статичними методами й не можна звертатися до динамічних. Вводять спеціальні поняття - статичний і динамічний контексти. До статичному контексту відносять статичні методи, статичні ініціалізатори, ініціалізатори статичних полів. Всі інші частини коду мають динамічний контекст.

При виконанні коду в динамічному контексті завжди є об'єкт, з яким йде робота в даний момент. Наприклад, для динамічного методу це об'єкт, у якого він був викликаний, і так далі.

Навпаки, зі статичним контекстом асоційованих об'єктів немає. Наприклад, як вже вказувалося, стартовий метод main() викликається в тої момент, коли жоден об'єкт ще не створений. При зверненні до статичного методу, наприклад, MyClass.staticMethod(), також може не бути жодного примірника MyClass. Звертатися до статичних методів класу Math можна, а створювати його екземпляри ні.

А раз немає асоційованих об'єктів, то й користуватися динамічними конструкціями не можна. Можна тільки посилатися на статичні поля й викликати статичні методи. Або звертатися до об'єктів через посилання на них, отримані в результаті виклику конструктора або як аргумент методу і т.п.

 


<== попередня лекція | наступна лекція ==>
Конкретні класи колекцій | Ключові слова this і super


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн