Повернення значень з методів
Будь-який метод повинен повертати значення.Метод повертається в код, що його викликав, якщо:
- виконано всі оператори методу;
- зустрівся оператор return;
- викинуто виключення.
Тип значення, що повертається, потрібно оголосити в декларації методу. У тілі методу, використовується оператор return для повернення значення.
- Будь-який метод що містить в декларацій void не повертає значення. Він не повинен містити оператор return, але з нього можна повернутися наступним чином:
- Якщо ви спробуєте повернути значення з методу, який має void, ви отримаєте помилку компілятора.
- Будь-який метод, з вказаним значенням, що повертається, повинен містити оператор повернення:
Приклад використання 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 ();
SomeClass.someMethod ();
static int someStaticVar = 0;
Поля, описані як static зберігаються в єдиній копії для всіх об'єктів даного типу і навіть без існування будь-якого об'єкту.
Є два шляхи звернення до статичних полів:
1. Через посилання на будь-який екземпляр класу
SomeClass someRef = new someClass ();
someRef.someStaticVar = 10;
SomeClass someRef = new someClass ();
someRef.someStaticVar = 10;
2. Через ім'я класу
SomeClass.someStaticVar = 10;
Рекомендується звертатися до статичних полів, тільки використовуючи ім'я класу!
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 - ніхто її змінити не може.