Назад Зміст Вперед

Створення класу, методи і властивості

Створення класу, властивості

Перед тим, як створювати об'єкти спочатку слід створити клас. У мові Java загальний вигляд створення класу виглядає так:

public class Ім'яКласу{
         вміст класу 
}

Вміст класу - це в основному змінні та функції.
Змінні призначені, для того щоб зберігати дані описуваного класом об'єкта. 
Так, якщо необхідно описати геометричну точку, то повинні бути змінні, що описують її координати. У класі це буде виглядати наступним чином:

public class Point{ 
int x; 
int y; 
}

Таким чином, повідомляємо компілятор, що в об'єктах нашого класу точка буде описуватися двома значеннями: x і y. Таким чином створюємо клас, який містить тільки властивості і поки не містить методів.

Змінні створені в самому класі називаються властивостями класу.

Методи

Розглянемо ще один приклад класу. Припустимо, необхідно написати програму, що моделює управління освітленням. В цьому випадку знадобляться об'єкти лампочок, і значить клас, що описує лампочку. Лампа повинна вміти включатися, вимикатися, і у нас повинна бути можливість дізнатися, в якому вона зараз стані.

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

Навіщо це робиться? Припустимо, що інші об'єкти програми будуть працювати зі змінними, що зберігають стан лампочок безпосередньо, тоді якщо захочете змінити спосіб зберігання даних в класі, доведеться переписувати всі звернення до властивостей об'єктів по всій програмі. Що буде ще складніше, якщо ви працюєте над проектом не поодинці.

Таким чином, у лампочки будуть не тільки властивості, але і методи, тобто функції, що дозволяють нею керувати. Клас матиме такий вигляд:

public class Lamp { 
boolean isOn; 
void on() { 
isOn = true; 
void off() { 
isOn = false; 
boolean getState(){ 
return isOn; 
}

В даному класі ми маємо властивість isOn, що зберігає стан лампочки, і три методи, що дозволяють з ним працювати. Методи on і off включають і вимикають лампочку, getState дозволяє дізнатися, в якому вона стані в даний момент.

Права доступу до властивостей і методів

Щоб методи або властивості об'єктів були доступні всім, перед їх оголошенням слід поставити слово public. Дане слово називають модифікатором доступу.

public class Point{ 
public int x; 
public int y; 
}
Також, можна зробити так, щоб функції або змінні були видні тільки всередині цього класу. У цьому випадку замість public перед типом змінної ставиться слово private.

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

public class Lamp { 
private boolean isOn; 
public void on() { 
isOn = true; } 
public void off() { 
isOn = false; 
public boolean getState(){ 
return isOn; 
}


Властивість isOn закривається для зовнішнього доступу, а методи on, off і getState відкриті і саме через них може виконуватися вся робота.

Модифікаторів доступу може не бути. В цьому випадку доступ вважають "пакетним", тобто до такої властивості або методу мають доступ класи з цього ж пакета.

Функції доступу

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

Якщо змінна має тип доступу private, щоб інші класи мали доступ до її значень, робляться методи для призначення нового значення і його отримання.

public class Point{ 
private int x; 
public void setX(int x1){ 
x = x1; 
public int getX(){ 
return x; 
}

Функція setX отримує ззовні нове значення для x і заносить його в властивість класу. Функція getX повертає значення x.
Таким функціям прийнято давати імена setІм'яЗмінної для призначення нового значення, і getІм'яЗмінної для отримання значення. Часто такі функції називають сетерами і геттерами.

Створення об'єктів, робота з об'єктами 

Для того, щоб почати використання класу, необхідно створити його об'єкт. Це можна зробити всередині функції main. Але спочатку треба створити змінну об'єкта.
Lamp first;

Створена змінна поки не містить об'єкта. Змінні класів не містять самих об'єктів, вони служать для зберігання адрес об'єктів в пам'яті. Спочатку в змінної буде пусте значення, тобто null. І якщо спробуєте у цієї змінної викликати методи класу, отримаєте помилку. Щоб створити сам об'єкт, слід скористатися оператором new:

first = new Lamp();

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

first.on();

Якщо об'єкт використовується в іншому класі (наприклад, створений окремий клас, в якому створено main, де відбувається робота з об'єктом), то звертатися таким чином можна тільки до відкритих властивостей і методів, і операція виду: first.isOn = true; викличе помилку, тому що властивість private і в іншого класу немає прав для доступу до нього.
Можна поєднати оголошення змінної і створення об'єкта:

Lamp first = new Lamp();


На один і той же об'єкт може посилатися кілька змінних. Наприклад:


Lamp first2 = first;
В результаті буде дві змінних: first і first2, але вони будуть посилатися на один і той же об'єкт.

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