Вызов метода Java-экземпляра - PullRequest
0 голосов
/ 21 марта 2010

Когда я вызываю метод экземпляра класса следующим образом: object_name.function_name (); откуда компилятор знает, что «имя_функции» должно вызываться для этого «объекта_имя» за кулисами?

Ответы [ 2 ]

1 голос
/ 21 марта 2010

Когда компилятор читает код, он помещает каждое «слово» (что-либо между пробелами или операторами) во внутренний стек. Когда он находит такой оператор, как «+», «=» или «.», Он извлекает последнее «слово» из стека. Компилятор знает, что "." оператор означает, что вы вызываете метод из объекта, имя которого является словом, которое вы только что вытолкнули. Затем он ищет файл класса этого объекта для метода.

Например:

Object object_name = new Object ();

object_name.function_name ();

Когда компиляция попадает в строку выше, она помещает имя_объекта во внутренний стек, а затем ищет метод с именем function_name () в файле Object.class. Если он не находит файл Object.class, он будет искать файл Object.java и скомпилирует его, а затем будет искать function_name () в только что скомпилированном файле Object.class.

1 голос
/ 21 марта 2010

Это определяется компилятором при чтении вашего кода. У Java есть синтаксис, который определяет правила и грамматику языка. Особый синтаксис Java предписывает, что за ссылками на объекты следует точка, а затем имя метода.

Все языки (не только языки программирования) имеют схожие правила. Ваш мозг составляет предложение, которое вы сейчас читаете, основываясь на синтаксисе английского языка. Правила языка - это то, что делает язык понятным. Определяя правила о значении выражений, мы можем общаться. Языки программирования ничем не отличаются!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...