Поля класса java что это

Классы и объекты в Java 8

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

Объявление классов

Классы в Java объявляются с помощью ключевого слова class . Пример самого простого объявления класса:

Здесь мы объявляем новый класс с именем Goblin .

Внутри фигурных скобок объявляются все поля, конструкторы и методы класса.

Перед ключевым словом class может стоять модификатор public , который делает класс доступным из всех пакетов. Если модификатора public нет, как в нашем случае, то класс доступен только в том пакете, в котором он объявлен.

Объявление полей

В этом примере мы объявили четыре поля:

  • поле money с типом int ;
  • поле health с типом double ;
  • поле diamonds с типом int ;
  • поле name с типом String .

Каждый экземпляр класса Goblin будет иметь своё значение полей money , health , diamonds и name .

В самом начале объявления поля указывается модификатор доступа к полю ( private , protected или public ), либо не указывается, и тогда используется доступ по умолчанию package-private. Затем указывается, если нужно, ключевое слово static (будет объяснено позже), а также, если нужно, ключевое слово final (будет объяснено позже). Затем тип поля и имя. Затем поле может сразу инициализироваться начальным значением, например как поле diamonds инициализируется числом 10 в нашем примере.

Читайте также:  Есть словарь координат городов python

Модификатор доступа, static и final могут располагаться в любом порядке, но согласно соглашению о кодировании принят именно такой порядок, который описан в статье.

Поле money объявлено с модификатором доступа private , и оно будет доступно только внутри этого класса.

Поле health объявлено без модификаторов доступа, и для него будет использоваться уровень доступа package-private (поле будет доступно только внутри своего пакета).

Поле diamonds объявлено с модификатором доступа protected , и оно будет доступно в этом пакете, этом классе и классах наследниках от этого класса (как объявлять наследников будет объяснено позже).

Поле name объявлено с модификатором доступа public , и оно будет доступно во всех классах всех пакетов.

Уровни доступа

Модификатор Класс Пакет Дочерний класс Все классы
public Есть Есть Есть Есть
protected Есть Есть Есть Нет
без модификатора Есть Есть Нет Нет
private Есть Нет Нет Нет

Имя поля следует давать в соответствии с соглашениями.

Обращаться к полю внутри класса, которому оно принадлежит можно просто по имени поля:

Источник

Поля класса Java – подробно для новичков

Поле Java – это переменная внутри класса. Например, в классе, представляющем сотрудника, класс Работник может содержать следующие поля:

Синтаксис объявления поля

[access_modifier] [static] [final] type name [= initial value] ;

Квадратные скобки [] вокруг некоторых ключевых слов означают, что этот параметр является необязательным. Требуется только тип и имя.

  1. Сначала модификатор доступа может быть объявлен для него. Он определяет, какие классы объектов могут получить доступ к полю. В приведенном выше примере Employee не было модификаторов доступа.
  2. Тип данных должен быть назначен. В приведенном выше примере Employee использовались типы данных String, int и Date.
  3. Может быть статическим. В Java статические поля принадлежат классу, а не экземплярам класса. Таким образом, все экземпляры любого класса будут иметь доступ к одной и той же переменной статического поля.
  4. Нестатическое значение может быть различным для каждого объекта (экземпляра) класса.
  5. Может быть объявлено как окончательное или нет. В первом случае не может изменить свое значение. Во-втором – должно иметь начальное значение, назначенное ему, и после установки значение не может быть изменено снова. Окончательное поле часто также объявляется статическим, объявляемым как static и final, также называемым « константой ».
  6. Имеет имя. Вы можете выбрать это имя свободно, но есть некоторые ограничения на то, какие символы могут содержать имя.
  7. Можете при желании установить начальное значение для него.

Некоторые из приведенных выше вариантов более подробно описаны в следующих разделах.

Модификаторы доступа

Модификатор доступа определяет, можно ли получить доступ к полю другим классам, кроме класса, владеющего полем. Существует четыре вида:

  • частный доступ – означает, что только код внутри самого класса может получить доступ к этому полю;
  • к пакету – означает, что только код внутри самого класса или других классов в том же пакете может получить доступ к полю. Вы на самом деле не пишете модификатор пакета. Оставляя любой модификатор доступа, модификатор доступа по умолчанию устанавливается в область действия пакета;
  • защищенный доступ – похож на модификатор пакета, за исключением того, что подклассы класса также могут обращаться к полю, даже если подкласс не находится в том же пакете;
  • открытый доступ – означает, что к полю могут обращаться все классы Java в вашем приложении.

Вышеупомянутое использование модификаторов доступа к полю используется только в этом примере. Вы можете не использовать модификаторы доступа в одном классе. Чаще всего применяются частные и защищенные. Для простых классов переноса данных все поля объявляют открытыми.

Статические и нестатические поля

Поле Java может быть статическим или нестатическим. Статическое поле принадлежит классу. Таким образом, независимо от того, сколько объектов вы создаете для этого класса, будет существовать только одно поле, расположенное в классе, и значение этого поля одинаково, независимо от того, к какому объекту он доступен. Вот диаграмма, иллюстрирующая статические поля:

Статические поля Java расположены в классе, а не в экземплярах класса

Вы определяете статическое поле, используя ключевое слово static в объявлении поля, например:

Статические поля расположены в классе, поэтому вам не нужен экземпляр для доступа к статическим полям. Вы просто пишете имя впереди, вот так:

Customer.staticField1 = "value"; System.out.println(Customer.staticField1);

Нестатические поля Java, с другой стороны, расположены в экземплярах класса. Каждый экземпляр может иметь свои собственные значения для этих полей. Вот диаграмма, иллюстрирующая нестатические поля:

Нестатические поля Java расположены в экземплярах класса

Вы определяете нестатическое поле, просто опуская ключевое слово static. Вот пример:

Для доступа к нестатическому полю вам необходим экземпляр(объект), к которому вы можете получить доступ к нему:

Customer customer = new Customer(); customer.field1 = "value"; System.out.println(customer.field1);

Окончательные

Поле может быть объявлено окончательным. Не может иметь измененное значение после назначения. Для объявления добавляете ключевое слово final:

Значение поля field1 не может быть изменено сейчас. Это означает, что даже если поле принадлежит объектам, вы не можете изменять значение поля от объекта к объекту.

Если вы все равно не можете изменить значение конечного поля, во многих случаях имеет смысл также объявить его статическим. Таким образом, он существует только в классе, а не в каждом объекте:

Поскольку статические конечные поля часто используются в качестве констант, соглашение об именах должно записывать имя поля в верхнем регистре и разделять слова подчеркиванием _. Вот пример:

Именование

Имя поля используется для ссылки на это поле из вашего кода:

Customer customer = new Customer(); customer.city = "New York"; System.out.println(customer.city);
  • Первая строка создает новый объект Customer (экземпляр класса Customer) и сохраняет его в переменной с именем customer.
  • Вторая строка присваивает значение String New York для поля города объектов Customer.
  • Третья строка выводит значение поля города на вывод консоли.

Ограничения именования и соглашения именования для полей такие же, как и для любых других типов переменных.

Начальное значение

Поле может иметь начальное значение, которое присваивается при создании в JVM. Статические поля создаются при загрузке класса. Класс загружается при первом обращении к нему в вашей программе. Нестатические поля создаются при создании объекта, которому они принадлежат.

Вот пример поля, объявленного с начальным значением:

Хотите ли вы инициализировать свои поля (и другие переменные) начальным значением, решать вам.

Источник

Оцените статью