Видео: Лекция по основам Java. Конструкторы, уровни доступа, статические поля и методы 2025
Java - это объектно-ориентированный язык программирования. Итак, как разработчик приложений для Android, ваша основная цель - описать объекты. Ваша близкая цель - описать близких родственников объектов, а именно классов. Класс - это идея определенной вещи. Объект - это конкретный экземпляр класса.
Здесь воспроизводится небольшая часть исходного кода класса Toast для Android.
public class Toast {public static final int LENGTH_LONG = 1; public static Toast makeText (контекстный контекст, текст CharSequence, int duration) {Toast result = new Toast (контекст); LayoutInflater inflate = (LayoutInflater). getSystemService (Контекст LAYOUT_INFLATER_SERVICE); Просмотр v = раздувание. надуть (com. android. internal. R. layout. transient_notification, null); TextView tv = (TextView) v. findViewById (com. android. internal. R. id. message); ТВ. SetText (текст); результат. mNextView = v; результат. mDuration = продолжительность; return result;} public void show () {if (mNextView == null) {throw new RuntimeException («setView должен был быть вызван»);} Служба INotificationManager = getService (); Строка pkg = mContext. getPackageName (); TN tn = mTN; попробуйте {сервис. enqueueToast (pkg, tn, mDuration);} catch (RemoteException e) {// Пусто}}}
В соответствии с этим кодом класс Toast имеет статическое поле LENGTH_LONG и статический метод с именем makeText. Все, что объявлено статичным, относится ко всему классу, а не к какому-либо конкретному экземпляру класса. Когда вы создаете статическое поле, LENGTH_LONG, вы создаете только одну копию поля. Эта копия остается со всем классом Toast. Независимо от того, сколько экземпляров класса Toast вы создаете - один, девять или ничего, у вас есть только одно поле LENGTH_LONG.
Сравните это с этой ситуацией. Здесь у класса Account есть имя, адрес и баланс полей. Поля не являются статическими, поэтому каждый экземпляр класса Account имеет собственное имя, собственный адрес и собственный баланс. Один экземпляр имеет имя Barry Burd и баланс 24. 02, а другой экземпляр имеет имя John Q. Public с балансом -471. 03. Чтобы ссылаться на баланс Бёрда, вы можете написать что-то вроде myAccount. баланс, как в следующем коде:
Учетная запись myAccount = новая учетная запись (); мой аккаунт. name = "Burd"; мой аккаунт. address = "222 Cyberspace Lane"; мой аккаунт. баланс = 24. 02;
Чтобы ссылаться на нестатический член класса, вы пишете имя объекта (например, myAccount), затем точку, а затем имя члена (например, баланс).
Но поле LENGTH_LONG класса Toast статично. Когда вы создаете экземпляр Toast, вы не создаете новое поле LENGTH_LONG. Класс Toast имеет одно поле LENGTH_LONG, и все. Соответственно, вы ссылаетесь на LENGTH_LONG, предваряя имя поля именем класса Toast, а затем точкой:
Тост. LENGTH_LONG
Фактически, типичное использование Toast в приложении для Android относится к статическому полю LENGTH_LONG и статическому методу makeText:
Toast. makeText (getApplication (), «Whoa!», Toast. LENGTH_LONG). показать();
Вызов метода makeText класса Toast возвращает фактический объект - экземпляр класса Toast. (Вы можете проверить это, обратившись к первой строке метода makeText выше.) Таким образом, в приложении для Android есть выражение, например
Toast. makeText (getApplication (), «Whoa!», Toast. LENGTH_LONG)
обозначает объект. И каждый объект, созданный из класса Toast, имеет свой собственный нестатический метод show. Вот почему вы обычно следуете за тостом. makeText вызов с. показать().
Вот последнее слово о коде, который вы найдете здесь: помимо статического, поле LENGTH_LONG также является окончательным. Конечным полем является значение, значение которого не может быть изменено. Другими словами, когда вы объявляете LENGTH_LONG, вы можете инициализировать его значение до 1. Но в другом месте кода вы не можете писать LENGTH_LONG = 2. (В этом случае вы даже не можете писать LENGTH_LONG = 1 в другом месте кода.)
Во многих языках программирования слово константа (или аббревиатура const) ссылается на переменную, значение которой не может быть изменено.