|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
10.07.2017, 14:34 | #1 |
Регистрация: 10.07.2017
Сообщений: 4
|
Класс System
Рад приветствовать всех завсегдатаев этого замечательно форума!
Намедни решил разобраться со структурой всем хорошо известного метода, который отвечает за стандартный поток вывода (обычно используется экран компьютера), то бишь, 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 |