текст перекладу
Static Block | Частина-11 | Основи Java: ООП (Об'єктно-орієнтоване програмування) | автор: Sahil Hamirani
Коли буде виконано Static блок:
Static блоки виконуються під час завантаження класу. Отже, коли клас завантажується, якщо потрібно виконати якусь діяльність, це потрібно визначити в static блоці.
Приклад 1:
Під час завантаження класу Java відповідні нативні бібліотеки мають бути завантажені. Отже, ми повинні визначити цю діяльність у static блоці.
class Test
{
static
{
System.loadLibrary("native-library-path");
}
}
Приклад 2:
Після завантаження кожного класу DatabaseDriver ми повинні зареєструвати клас Driver в DriverManager. Але в класі DatabaseDriver є static блок для виконання цієї діяльності, і нам не потрібно реєструвати його явно.
class DbDriver
{
static
{
// Реєстрація цього драйвера в DriverManager
}
}
В межах класу можна оголосити будь-яку кількість static блоків. Але всі ці static блоки виконуватимуться згори вниз.
Питання на співбесіді:
Питання 1: Чи можливо вивести деякі повідомлення в консоль без написання методу main?
Відповідь: Так, за допомогою static блоку.
class Test
{
static
{
System.out.println("Hello I can print");
System.exit(0);
}
}
Виведення: Hello I can print
Питання 2: Чи можливо вивести деякі повідомлення в консоль без написання методу main та static блоку?
Відповідь: Так, звісно, є кілька способів.
Варіант 1:
class Test
{
static int x = m1();
public static int m1()
{
System.out.println("Hello I can print");
System.exit(0);
return 10;
}
}
Варіант 2:
class Test
{
static Test t = new Test();
// Блок ініціалізації
{
System.out.println("Hello I can print");
System.exit(0);
}
}
Варіант 3:
class Test
{
static Test t = new Test();
Test()
{
System.out.println("Hello I can print");
System.exit(0);
}
}
Починаючи з версії 1.7, метод main є обов'язковим для запуску виконання програми. Отже, починаючи з версії 1.7, без написання методу main неможливо вивести деякі повідомлення в консоль.
Статичний контроль потоку в ієрархії батько-дитина:
- Кожного разу, коли ми виконуємо дочірній клас, наступна послідовність подій виконується автоматично як частина статичного потоку контролю.
- Ідентифікація статичних членів від батька до дитини. [1 до 11]
- Виконання присвоєнь статичних змінних та static блоків від батька до дитини. [12 до 22]
- Виконання лише методу main класу дитини. [23 до 25]
Приклад:
Статичний контроль потоку в ієрархії батько-дитина | автор: Sahil Hamirani
Кожного разу, коли ми завантажуємо клас дитини, клас батька завантажується автоматично, але коли ми завантажуємо клас батька, клас дитини не буде завантажений (оскільки члени класу батька за замовчуванням доступні для класу дитини, тоді як члени класу дитини за замовчуванням не доступні для батька).
Перекладено з: Static Block | Part-11 | Core Java: OOPs(Object Oriented Programming)