Порядок объявления методов в Java - PullRequest
0 голосов
/ 02 сентября 2018

В C / C ++ мы должны объявлять функции перед их вызовом. В Javascript есть подъемные переменные и функции. Я не могу найти информацию о Java. Есть ли подъем методов тоже?

Ответы [ 2 ]

0 голосов
/ 02 сентября 2018

В Java есть два типа методов: методы экземпляра и методы класса. Для вызова первого вам нужно создать экземпляр класса, а два - для второго. Вот пример:

public class MyClass{

  public String instanceMethod(){
    return "This is from instance method";
  }

  public static String classMethod(){
    return "This is from class method";
  }

  public static void main(String[] args){

    System.out.println(MyClass.classMethod()); //will work

    System.out.println(MyClass.instanceMethod()); //compilation error

    MyClass myInstance = new MyClass();
    System.out.println(myInstance.instanceMethod()); //will work

  }
}
0 голосов
/ 02 сентября 2018

В Java функции / процедуры называются методами. Разница лишь в том, что функция возвращает значение. Нет, там нет подъема, как у JS (слава богу). Единственным требованием к переменным является то, что вы должны создать их, прежде чем использовать их. Так же, как С. Но методы являются частью объекта. Таким образом, они привязаны к объекту, и вы можете вызывать их выше их объявления (виртуальный метод, все виртуально :)). Потому что вызов их на самом деле включает в себя <Class>.method() И класс уже скомпилирован и загружен до того, как время его выполнит. (некоторые отражения могут обойти или изменить это поведение, хотя).

Компилятор относительно свободен для изменения порядка вещей, но, например, volatile может запретить такое поведение. Кстати: Поднимает и переупорядочивает одно и то же?

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