Об'єктно-орієнтований стиль програмування коротко можна описати таким чином:
Таким чином, в процесі виконання програми безпосередньо діють об'єкти. Однак в Деяких випадках природніше вважати, що дії виконуються самим класом. Хорошим прикладом є клас Math - все його методи викликаються від імені класу:
Console.WriteLine (Math.Sin (0.5) + Math.Cos (0.5)) |
---|
Було б досить дивно для обчислення математичних функцій спочатку створювати об'єкт- «математику»:
Math m1 = new Math (); Math m2 = new Math (); Console.WriteLine (m1.Sin (0.5) + m2.Cos (0.5)) |
---|
Це означало б, що можна створювати кілька «математик». Але ж вони все Повинні діяти абсолютно однаково.
Аналогічно справа йде і з перемінними - бувають випадки, коли деякі дані природніше представлять НЕ як порцію інформації, що належить об'єкту, а класу в цілому.
В класі Math ця ситуація зустрічається при доступі до тригонометрическое Констан - Math.PI.
Елементи класу (змінні і методи), які співвідносяться ні З об'єктами, а з класом, називаються статичного. В описі статичних елементів використовується ключове слово static.
Статичні змінні описуються і зберігаються в класі в однині.
На відміну від статичних членів звичайні елементи класу називаються елементами примірників класу - методи примірників і змінні примірників. Змінні примірника описуються в класі і зберігаються в об'єктах класу.
Клас Person моделює ситуацію, коли безліч людей мають у своєму розпорядженні деяким загальним запасом їжі та ділять його порівну.
Кількість їжі FoodQuantity і кількість людей PeopleCount - характеристики всієї сукупності людей. Тому вони описані як статичні змінні.
Метод Description описує стан всієї множини людей і також є статичним методом.
Статичні методи можуть використовувати тільки статичні змінні та інші статичні методи класу. Спроба використовувати в методі Description змінну Weight привела б до помилки компілятора.
В класі Program:
Результат: