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

Особливості використання класів

Повернення значень з методів

Будь-який метод повинен повертати значення.
Метод повертається в код, що його викликав, якщо:
  • виконано всі оператори методу;
  • зустрівся оператор return;
  • викинуто виключення.
Якщо метод повертає значення, то повинен бути оператор return, після якого вказати тип.
Тип значення, що повертається, потрібно оголосити в декларації методу. У тілі методу, використовується оператор return для повернення значення.
  • Будь-який метод що містить в декларацій void не повертає значення. Він не повинен містити оператор return, але з нього можна повернутися наступним чином: 
return;
  • Якщо ви спробуєте повернути значення з методу, який має void, ви отримаєте помилку компілятора. 
  • Будь-який метод, з вказаним значенням, що повертається, повинен містити оператор повернення: 
return ReturnValue;

Приклад використання return
public void print(boolean shouldPrint){
  if (!shouldPrint){
  return;
  }
  System.out.println("Test");
}

public double getVolume(double a, double b, double c){
  double volume = a*b*c;
  return volume;
}

Особливості передачі параметрів

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

Ключове слово this

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

this в конструкторі може бути використано для виклику іншого конструктора того ж класу
Такий виклик називається явним викликом конструктора. Якщо явний виклик конструктора присутній то він повинен бути першим рядком конструктора.  

Приклад
public Box(double a, double b, double c) {
// Вирішення "проблеми" затінення
  this.a = a;
  this.b = b;
  this.c = c;
}
//повторне використання конструктора
public Box(){
  this(0,0,0);
}

 Статичні (static) члени класу

Ключове слово static означає прив'язування не до об'єктів а не до класів.
class Box{ 
  public int nonStaticVar;
  public static int staticVar;
}

Java підтримує статичні методи в той же спосіб що і статичні поля. Звернення до статичних методів аналогічне до статичних полів:
SomeClass.someMethod ();

У Java поля і методи можуть бути описані як static.
static int someStaticVar = 0; 
Поля, описані як static зберігаються в єдиній копії для всіх об'єктів даного типу і навіть без існування будь-якого об'єкту. 

Є два шляхи звернення до статичних полів
1. Через посилання на будь-який екземпляр класу
SomeClass someRef = new someClass ();
someRef.someStaticVar = 10; 
2. Через ім'я класу 
SomeClass.someStaticVar = 10;
Рекомендується звертатися до статичних полів, тільки використовуючи ім'я класу!

Іменовані константи

Приклад використання статичного поля - це іменована константа (позначати константу ключовим словом const заборонено). 
Якщо статичне поле класу, або змінна проініціалізовані константним виразом, вони розглядаються компілятором, як іменована константа. Їх значення може бути використано в операторах switch, а також для умовної компіляції (для констант типу boolean) при використанні з оператором if
private static final double PI = 3.14159;

Приклад використання статичних полів
public class Bicycle {
  ...
  private static int numberOfBicycles = 0;
  private int id;
 
  public Bicycle(i){
  // Збільшити кількість велосипедів і привласнити ідентифікаційний номер 
  id = ++numberOfBicycles;
  }
  // метод return це ID змінної екземпляру
  public int getID() {
  return id;
  }
  ...
}

Особливості використання статичних методів

  • Методи примірника класу можуть мати доступ до полів і методів екземпляра безпосередньо. 
  • Методи примірника можуть безпосередньо звертатися до статичних змінних. 
  • Статичні методи можуть мати прямий доступ до статичних методів і полів. 
  • Статичні методи НЕ мають прямого доступу до методів і полів екземпляра класу. Для цього необхідне посилання на об'єкт класу. 
  • Статичні методи НЕ можуть використовувати this.
Статики не мають доступу до нестатиків!

Ключове слово final

  • Ключове слово final (фінальний) може бути застосовано до опису змінної, методу або класу. 
  • Фінальне поле класу повинно бути ініційоване при описі, або в конструкторі класу (а статичне поле - в статичному блоці ініціалізації) і далі його значення не може бути змінено. 
  • Значення локальних змінних, а також параметрів методу, позначених ключовим словом final, не можуть бути змінені після присвоєння. 
  • Метод класу, відзначений словом final, не може бути перевизначений при успадкуванні. 
  • Фінальний клас не може мати спадкоємців взагалі.
Загалом, константа
  • static- це означає, що всі її можуть використовувати;
  • public - всі класи мають до неї доступ;
  • final - ніхто її змінити не може.

.