Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 03.11.2017
Сообщений: 6

Почему статические методы запускаются раньше конструкторов?

21.03.2018, 22:53. Показов 826. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Поясните пожалуйста - вот у меня есть следующий код:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class StaticSuper{
  static{ 
    System.out.println("Родительский статический блок");
  }
  StaticSuper(){
    System.out.println("Родительский конструктор");
  }
}
public class StaticTests extends StaticSuper  {
  static int rand;
  static{ 
    System.out.println("Cтатический блок");
  }
  StaticTests(){
    System.out.println("Конструктор");
  }
  public static void main(String[] args){
    System.out.println("Внутри main");
    StaticTests st = new StaticTests();
  }
}
Результат будет следующий:

Родительский статический блок
Статический блок
Внутри main
Родительский конструктор
Конструктор

Так вот, почему статические методы запускаются раньше конструкторов? И почему они вообще запускаются, ведь мы их не вызывали вообще? И почему выводится родительский блок, ведь мы обьяявляем лишь подкласс StaticTest, и вывести должно лишь конструктор?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.03.2018, 22:53
Ответы с готовыми решениями:

Статические методы
Есть код: public class Solution { public static int step; public static void main(String args) { method1();...

Статические методы
Нужно помочь решить задания.

Статические методы
Есть задание, некому проверить :) Правильного ответа не жду, жду указания на ошибки) Спасибо всем за участие Создать класс MyArea, в...

5
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
21.03.2018, 23:04
Когда ты создаешь объект наследника, сначала вызывается конструктор предка - иначе откуда наследник возьмет унаследованные поля и методы?
Цитата Сообщение от Pride_e Посмотреть сообщение
статические методы запускаются раньше
Это не методы, а статические блоки инициализации, они вызываются один раз при первом обращении к классу. Потому так и называются - в них можно инициализировать поля, без участия конструкторов (без создания объекта).
2
 Аватар для reisal78
944 / 687 / 230
Регистрация: 28.04.2013
Сообщений: 1,925
21.03.2018, 23:47
Цитата Сообщение от iSmokeJC Посмотреть сообщение
они вызываются один раз при первом обращении к классу.
а если так? =)
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
class StaticSuper {
    static {
        System.out.println("Родительский статический блок");
    }
 
    StaticSuper() {
        System.out.println("Родительский конструктор");
    }
}
 
public class StaticTests extends StaticSuper {
    static int rand;
 
    static {
        System.out.println("Cтатический блок");
    }
 
    StaticTests() {
        System.out.println("Конструктор");
    }
 
    public static void main(String[] args) {
        System.out.println("Внутри main");
//    StaticTests st = new StaticTests();
    }
}
0
0 / 0 / 0
Регистрация: 03.11.2017
Сообщений: 6
22.03.2018, 09:39  [ТС]
Спасибо, в общих чертах понял)
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
22.03.2018, 20:45
Цитата Сообщение от reisal78 Посмотреть сообщение
а если так? =)
Родительский статический блок
Cтатический блок
Внутри main

И что я неправильно написал?

Добавлено через 4 минуты
Не дописал, что статик-блоки тоже сверху вниз работают?
0
25 / 26 / 9
Регистрация: 14.03.2018
Сообщений: 74
22.03.2018, 20:46
...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.03.2018, 20:46
Помогаю со студенческими работами здесь

Статические методы
Доброго времени суток! Как можно написать метод void readLn(), который ждет нажатия enter, используя вот этот метод: static...

Статические методы в интерфейсах
Не могу понять, что не так. Есть у меня интерфейс, в котором есть описание статического метода, например static String...

Статические методы и переменные
Есть условие: Создать у класса Cat статическую переменную count, которая будет увеличиваться, если кошку создали, и убывать, если кошка...

Статические методы и переменные
Всем привет! Есть такое задание! Создать у класса Cat статическую переменную count, которая будет увеличиваться, если кошку создали, и...

Статические и нестатические переменные и методы.
Что такое статические и нестатические переменные и методы? Объясните плизз доходчиво.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru