Что такое "ClassName objectName;" делает до основного метода?
В этом коде я вижу следующие строки перед "основным" методом:
JTextArea displayArea;
JTextField typingArea;
Интересно, что делают эти строки и когда они выполняются. Насколько я знаю, "основным" методом является "точка входа". Итак, код будет выполняться с начала "основного" метода. Все остальные методы будут выполняться, если они вызываются из основного метода. Если это так, упомянутые 2 строки никогда не будут выполнены. Более того, даже если они будут казнены, что именно они делают? Что делают эти пары "ClassName objectName"?
6 ответов
Это называется "декларации". Они объявляют о существовании двух переменных, указывая их типы и имена. Расположение объявления определяет их область, другими словами, какие части программы могут знать об этих конкретных переменных и могут ссылаться на них.
Вы не включили весь файл.
Это объявления полей. Это указывает на то, что когда создается экземпляр класса (т. Е. Из него создается объект), каждый объект будет иметь ссылку на текстовую область и текстовое поле. Вам, однако, придется создавать эти объекты.
Notice how your main method is static. This means that it can run without the containing class being instantiated. However, most Java methods operate on objects. Suppose that your main is in class C. It is likely that somewhere in your main, you will see a "new C" which means that an instance of C is created. Then some other operation will be invoked on that new object (look for other, non-static methods in the file), and these operations will manipulate these two fields.
Эти объявления оцениваются, когда объект создается на виртуальной машине Java. Это прямо перед main
метод это случай.
Это определяет типы.
JTextArea displayArea; // this creates textarea type and thus textbox
JTextField typingArea; // thus creates textfield type var and thus text field
Это ученики.
По сути, в классе Java у вас есть методы и члены. Члены являются переменными, которые содержат состояние объектов, которые являются экземплярами этого класса.
Основной метод является отдельным, это статический метод, поэтому он может выполняться без экземпляра класса. Итак, у вас есть логика, которая работает в main(), и у вас есть логика, которая работает на экземпляре класса. Они совершенно разные.
Если вы тоже хотите, в вашей функции main() вы можете создать экземпляр класса, и тогда он может "запуститься", если произойдет какая-либо инициализация функций-членов.
Однако не все члены класса инициализируются в конструкторе, и они останутся нулевыми (поэтому в этом случае ничто не будет "выполнено" в этой точке). В вашем примере инициализация отсутствует, поэтому эти члены будут нулевыми при запуске логики конструктора.
Это члены (ссылки) переменные KeyEventDemo
учебный класс.
когда KeyEventDemo
создается с использованием new
ключевое слово, каждый экземпляр будет иметь эти переменные для ссылки на JTextArea
а также JTextField
соответственно. Они инициализированы в null
и назначаются в качестве ссылок на пару экземпляров в addComponentsToPane
метод.