Существует два типа классов (инстантируемые и стати c - по умолчанию инстанцируемый, поэтому с ним не связано ключевое слово). Инстанцируемые классы могут быть созданы с new Classname(constructor,arguments,here)
. Классы Stati c не могут быть созданы, и обычно ссылаются на то, что просто существует в концептуальном пространстве программиста программы. (Например, на настольных компьютерах программы имеют Среду, которая содержит переменные, которые могут быть установлены в памяти до запуска программы. Поскольку существует только одна Среда, это класс stati c.)
Там также есть два типа методов (instance и stati c - опять же, instance является значением по умолчанию, поэтому ключевое слово не связано). Методы экземпляра воздействуют на данные, связанные с экземпляром объекта (т. Е. Что-то, что вы можете поместить в переменную типа Classname), и их нужно вызывать с помощью variablename.InstanceMethodName(args)
. Методы Stati c, с другой стороны, относятся к чему-то, что всегда одинаково во всех случаях, когда вы используете класс, и их часто называют «служебными методами». На них ссылается Classname.StaticMethodName(args)
. (Кроме того, классы stati c могут содержать методы stati c, но не методы экземпляров. Это потому, что они никогда не могут быть созданы, поэтому никогда не будет экземпляров для методов экземпляров, с которыми можно работать.)
В некоторых случаях вы не хотите использовать конструктор для экземпляра класса. Один из таких случаев - обработка, необходимая для создания класса, может вызвать исключение. (Обычно считается плохой формой для конструктора переходить в состояние, в которое он может бросить.)
Глядя на ваш пример, new LayoutInflator(getContext())
может потенциально выбросить, если ему передано то, чего он не ожидал, или если Полученный контекст не имеет правильных значений, которые он ожидал. Итак, есть служебный метод stati c, который выполняет вызов new LayoutInflator()
, а затем подключает вещи, которые необходимо подключить, и устанавливает значения, которые должны быть установлены в новом экземпляре LayoutInflator, который он только что сконструировал, так, чтобы он работает должным образом в контексте, в котором вы его создали. Но, поскольку он может сделать это только путем получения информации из переданного контекста, он может потенциально выбросить, если попытается получить доступ к элементу контекста, который является нулевым в момент обращения к нему.
В большинстве книг, которые я видел, эти понятия размыты, и я знаю, что мое объяснение может сбить вас с толку. Вот почему есть возможность ответить нескольким людям.
И вот некоторая информация, которая поможет вам с этим сайтом в будущем. То, что вы ищете, это книга или курс по Android программированию. Быстрый поиск находит https://www.onlineprogrammingbooks.com/android/ в качестве потенциального ресурса, но я не проверял качество этих книг; Вы также можете найти Android курсы по программированию онлайн или в местном колледже. Кроме того, вы на самом деле не спрашиваете «делать что-то в Android Studio», вы спрашиваете «делать что-то на языке, используемом для программирования Android устройств, которые вы программируете с помощью Android Studio». И, наконец, последний вопрос, который вы задали («каков наилучший способ изучения Android программирования с использованием Android Studio?»), Обычно закрывал весь вопрос как слишком базовый c и широкий для сайта (' «лучшее» субъективно, и то, что работает для одного человека, не обязательно работает для другого). Но я знаю, как все может показаться запутанным, и я хочу, чтобы у вас был хороший опыт здесь. Я надеюсь, что этот ответ поможет немного.