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

Класи

Клас - це шаблон поведінки об'єктів певного типу із заданими параметрами, що визначають стан. Усі примірники одного класу (об'єкти, породжені від одного класу) мають один і той же набір властивостей і загальна поведінка, тобто однаково реагують на однакові повідомлення.

Тобто, клас - це деякий шаблон, який використовується для створення об'єкта. Кожен об'єкт має свої властивості і задає поведінку, визначаючи при цьому методи.

Дані, чи змінні, які визначені в середині класу, називають змінними екземпляру. Код міститься всередині методу.

Визначені всередині класу методи та змінні разом називають членами класу.

Визначені всередині класу змінні називають змінними екземпляру, оскільки кожен екземпляр класу (тобто кожен об'єкт класу) містить свої власні копії екземпляру класу. Таким чином, дані одного об'єкта відокремленні та відрізняються від даних іншого об'єкта.

Всі методи мають ту саму загальну форму, що й метод main( ). Однак, більшість методів не вказують як static чи public. Зверніть увагу, що загальна форма класу не містить визначення методу main (). Класи в Java можуть не містити цей метод. Його обов'язково зазначати лише у тих випадках, коли даний клас слугує початковою точкою програми.

При створенні класу описуються поля:


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

Оголошення класів

  • починається оголошення класу із модифікаторів доступу: public, private, ...
  • далі - ім'я класу: пишеться ім'я з великої літери, так вимагає Java Code Conventions
  • якщо клас має батьківський клас, то записується ім'я батьківського класу після ключового слова extends
  • клас може реалізовувати деякий інтерфейс, імена інтерфейсу записується після ключового слова implenents
  • тіло класу записується у фігурних дужках
Наприклад,
public class ClassName extends ParentClassName implement           InterfaceName{
  variable defenition
  method defenition
}

Оголошення полів класу

Для того щоб оголосити  поля класу, треба звертатися до змінних. Змінні оголошуються модифікатором доступу (оскільки це поле) 
типом та 
іменем
Ім'я змінної задається з малої літери, так вимагає Java Code Conventions.

Наприклад,
private int variable one;

private - модифікатор доступу;
int - тип;
variable one;- ім'я.

Модифікатори доступу можна не вказувати, але так задавати некоректно. Модифікатор визначає рівень доступу до змінної. 
Є чотири рівні доступу:
  • public - поля доступні зі всіх класів;
  • private - поля доступні тільки в межах даного класу;
  • protected - надає доступ спадкоємцям класу;
  • default - задається за замовчуванням, якщо не визначені попередні три, 
З погляду використання інкапсуляції всі поля повинні бути помічені як private. 
Модифікатори доступу упорядковуються наступним чином (від менш відкритих - до більш відкритих):
  1. private 
  2. (none) default 
  3. protected 
  4. public

Методи

Методи - це підпрограми, приєднані до конкретних визначень класів.
При оголошенні методу задаються модифікатори доступу, тип результату, що повертається, ім'я методу, список параметрів, список виключень (exceptions):

public double calc (double param1, int param2){
//тіло методу
}

public - модифікатор доступу;
double - тип, що повертається;
calc - ім'я;
(double param1, int param2) - параметри (аргументи) та їх типи.

Ім'я методу та список його аргументів називають сигнатурою методу.

Правила опису методів:
  • тип методу void - метод не має типу значення, що повертається (виключенням є конструктор - він ніколи не повертає значення, тому void не застосовується);
  • методи описують всередині класів і на тому ж рівні вкладеності дужок, що й описи полів;
  • не можна описувати метод поза класом або всередині іншого методу чи блоку.

Перевантаження методів (overloading)

Кожен метод може мати різний набір аргументів при цьому маючи одне ім'я. Java дозволяє визначати всередині одного класу два або більше методів з одним ім'ям, якщо оголошення їхніх параметрів різні. Такі методи називаються перевантаженими, а процес - перевантаженням методів.
  1. Перевантажені методи повинні відрізнятися типами або кількістю параметрів.
  2. Типи повернення таких методів можуть бути різними.
  3. Java не розрізняє перевантажені методи за значенням, що повертається.
  4. Коли Java "зустрічає" виклик перевантаженого методу, вона просто виконує ту його версію, параметри якої відповідають аргументам, використаним у виклику.
Загальні правила перевантаження методів:
  • не використовувати складних варіантів перевантаження;
  • не використовувати перевантаження з однаковим числом параметрів;
  • замінювати, при можливості, перевантажені методи на кілька різних методів.

Конструктор класу

Конструктор - це іменований блок коду, який відповідає за ініціалізацію об'єкта. Він носить ім'я класу і є спеціальним методом. Він може мати параметри, а отже, ці параметри необхідно вказувати в дужках при створенні об'єкта. 
Приклад простого конструктора.
Trees () 
{
Number = ++nubmers; 
}
Конструкторів може бути кілька, проте вони повинні відрізнятися типами параметрів і їх кількістю. 
Приклад класу з декількома конструкторами.
public class Toys {
    String size;
    String color;
    static int numbers = 0;
    int number;
    // Перший конструктор
    Toys() {
         number = ++numbers;
    }
    // Другий конструктор
    Toys(String s) {
        number = ++numbers;
        size = s;
    }
     // Третій конструктор
    Toys(String s1, String s2) {
        number = ++numbers;
        size = s1;
        color = s2;
    }
    public static void main(String[] args) {
        Toys ball = new Toys(); // Використання першого конструктора
        ball.size = "small";
        ball.color = "red";
        
        Toys car = new Toys("big"); // Використання другого конструктора
        car.color = "green";
        Toys horse = new Toys("little", "brown"); // Використання третього конструктора
    }
}
  • Конструктор -  це метод класу, який ініціалізує новий об'єкт після його створення. Конструктори можуть мати тільки модифікатори доступу, тому конструктор не може бути abstract, final, native, static чи synchronized
  • Конструктори не мають типу повернення і не можуть повертати навіть тип void.
  • Конструктори мають однакові імена з ім'ям класу в якому описані, а імена методів відмінні від імен класу.

Конструктор за замовчуванням

Конструктор за замовчуванням створює компілятор, коли його не визначено програмістом. 
Такий конструктор викликає безаргументний конструктор суперкласу. 
Якщо батька класу вказано неявно, то викличеться конструктор класу Object. 
Безаргументний конструктор за замовчуванням не створюється.

Передача параметрів у методи

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

Параметрами можуть бути примітивні типи (byte, int, double, ...) або типи посилань (на масиви, на об'єкти). Кількість параметрів може бути фіксованою а може бути необмеженою.

Змінна кількість параметрів

Позначається трьома крапками:
public Print Stream printf (String format, Object ... args)

Усередині методу такий аргумент доступний як масив:
System.out.println(args.length);

Якщо оголошено конструкцію ... , то такі аргументи мають бути останніми в списку.

МетодиРезультати пошукJava Code Conventions

.