Когда компилятор читает код, он помещает каждое «слово» (что-либо между пробелами или операторами) во внутренний стек. Когда он находит такой оператор, как «+», «=» или «.», Он извлекает последнее «слово» из стека. Компилятор знает, что "." оператор означает, что вы вызываете метод из объекта, имя которого является словом, которое вы только что вытолкнули. Затем он ищет файл класса этого объекта для метода.
Например:
Object object_name = new Object ();
object_name.function_name ();
Когда компиляция попадает в строку выше, она помещает имя_объекта во внутренний стек, а затем ищет метод с именем function_name () в файле Object.class. Если он не находит файл Object.class, он будет искать файл Object.java и скомпилирует его, а затем будет искать function_name () в только что скомпилированном файле Object.class.