![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 10.07.2017
Сообщений: 4
|
![]()
Рад приветствовать всех завсегдатаев этого замечательно форума!
![]() Намедни решил разобраться со структурой всем хорошо известного метода, который отвечает за стандартный поток вывода (обычно используется экран компьютера), то бишь, System.out.println(). В общем, сразу же становится понятно, так как это весьма очевидно, что мы запрашиваем метод println() на объекте out класса PrintStream, который, в свою очередь, является вложенным объектом класса System и тем самым создаются ассоциативные отношения (если конкретизировать, то мы имеем дело с агрегированием, так как класс System создаётся путём включения уже существующего класса PrintStream) между классами System и PrintStream. Это всё вроде бы понятно, но, как выяснилось, переменная ссылочного типа out, которая описана в классе System, является статичной, а также, кроме всего прочего, имеет спецификатор final, то бишь, требует обязательной инициализации на этапе декларирования. Вот тут и возникают вопросы! В описании класса System я попытался найти строчку, которая бы указывала на явную инициализацию переменной оut. Кстати, по логике вещей, нам нужно не только связать ссылочную переменную с каким-то конкретным объектом, но и проинициализировать все основные поля, которыми обладает сам объект. Короче говоря, наткнулся на такую вот строчку: Код:
А теперь основной вопрос топика, ради которого он, собственно говоря, и создавался: как JVM понимает, что ей нужно вызвать эти методы для инициализации переменной out? Где мы обращаемся к методу initializeSystemClass()? Я привык думать, что инициализацию статических полей мы должны проводить явно, а не через вызов методов (хотя могу и ошибаться из-за недостатка знаний). А любой метод мы запрашиваем внутри главного метода main(), который указывает программе на место входа. Что же класс System? В моём понимании, это обычный класс, который содержит набор полей и операций над ними (методы). Ну и где же идёт обращение к какому бы то ни было методу внутри класса? Или же обращение происходит на каком-то другом этапе? Или же я чего-то недопонимаю? %) В любом случае, огромное всем спасибо за то, что уделили мне своё внимание! ![]() Последний раз редактировалось Lexoid2; 10.07.2017 в 14:36. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Необработанное исключение типа "System.FormatException" произошло в System.Data.dll - Visual C++ БД | zendau | Общие вопросы .NET | 3 | 30.06.2017 21:54 |
* Зачем наследовать класс System.Security.Cryptography.Symmet ricAlgorithm | КсюхаПлюха | C# (си шарп) | 8 | 18.10.2014 10:31 |
класс system.text.stringbuilder | Vlad1987 | C# (си шарп) | 4 | 29.09.2013 17:58 |
Ошибка Ambiguity between '_fastcall System::operator +(int,const System::Variant &)' and '_fastcall System::opera | Jawner | C++ Builder | 1 | 12.04.2012 09:58 |
класс ввода\вывода System::IO::File | Selebro | Общие вопросы C/C++ | 1 | 18.10.2008 22:48 |