Что такое поля класса java
качественно и просто объяснил. спасибо! отдельное спасибо за картинку с надписями полей и параметров конструктора!
Anton Уровень 10 Expert
13 апреля 2021
Здравствуйте. Спасибо за статью, сразу всё стало понятно, кроме внезапно появившейся в тексте фразы без объяснений: «Добавим также пустой конструктор без параметров, чтобы наш предыдущий пример был работоспособным» Зачем он там? Почему он не будет работать без него? Можно ответить в виде ссылки на статью.
Zhanna Уровень 20
25 августа 2020
Pavel Уровень 15
22 декабря 2019
не совсем понял, если можно поясните, разницу между созданием конструктора с параметрами и без
Объедкова Мария Олеговна Уровень 16
13 декабря 2019
Олег Коньшин Уровень 16
1 мая 2018
А можно инициализировать вот так: Cat cat3 = new Cat(«Рыжик», 5); не создавая конструктор?
Сообщество
JavaRush — это интерактивный онлайн-курс по изучению Java-программирования c нуля. Он содержит 1200 практических задач с проверкой решения в один клик, необходимый минимум теории по основам Java и мотивирующие фишки, которые помогут пройти курс до конца: игры, опросы, интересные проекты и статьи об эффективном обучении и карьере Java‑девелопера.
Подписывайтесь
Язык интерфейса
«Программистами не рождаются» © 2024 JavaRush
Скачивайте наши приложения
«Программистами не рождаются» © 2024 JavaRush
Этот веб-сайт использует данные cookie, чтобы настроить персонально под вас работу сервиса. Используя веб-сайт, вы даете согласие на применение данных cookie. Больше подробностей — в нашем Пользовательском соглашении.
Поле и/или переменная? Вот в чем вопрос
По ходу моего обучения языка Java термин «поле» не дает мне покоя. Я ни в книгах, ни в сети не нашел понятного объяснения этого явления. Кто-то говорит, что «поле» — это «переменная», просто название другое (для примера: объект и экземпляр). В других источниках — это разные вещи. Так вот, что такое «поле»? Дополнил примером. Он верный?
class MyClass< int weigth = 50; //---поле int height = 100; //---поле String str; //---поле int myMethod()< int a; //---локальная переменная (НЕ поле) int b; //---локальная переменная (НЕ поле) str = "Это строка"; //---полю присваивается значение . >>
Отслеживать
9,009 4 4 золотых знака 19 19 серебряных знаков 28 28 бронзовых знаков
задан 16 июн 2018 в 20:58
Алексей Ефимов Алексей Ефимов
351 2 2 серебряных знака 13 13 бронзовых знаков
Поле — это скорее не просто переменная, а переменная типа инстанса, то есть то, что Вы в классе объявляете. Например, public class A
16 июн 2018 в 21:02
поле — это то на что вы пишите гетеры и сетеры, а переменная это то, что внутри функции вы объявляете
16 июн 2018 в 21:03
Это названия из мира ООП, которые указывают на местоположение. Классы состоят из полей и методов. При этом поля это переменные класса, а методы это функции класса. Если вы слышите слово «поле», то сразу становится понятно, что переменная принадлежит классу и может быть доступна только из экземпляра класса или самого класса в случае если поле статическое.
16 июн 2018 в 21:14
А вообще это из-за того, что ООП по сути парадигма, которая представляет все объекты окружающего мира в виде свойств(вес, длина, кол-во ног и т.д.) и действий которые можно совершать с ним(бежать, кидать, кричать, вычислять). Объекты названы классами, их свойства названы полями, а совершаемые действия с ними методами. Когда переносим эту абстракцию на сам язык программирования, то для полей используем переменные, а для методов функции.
16 июн 2018 в 21:24
Все верно, грубо говоря это та переменная, что указывается сразу после объявления класса. Дальше просто для информации, если вы не слышали про модификаторы public и static, то потом встретите, сейчас вы используете private — видна только методам внутри класса. 1) Поле не обязательно объявлять сразу, можно их раскидать по всему телу класса, это не будет ошибкой. 2) Можно ее объявить публичной, тогда к ней можно обратиться извне: MyClass instance = new MyClass(); instance.**SomeField** = 10; 3) Она может быть статичной, тогда доступна из самого класса MyClass.**SomeField** = 10.
16 июн 2018 в 21:47
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
Понятие «поле» отнюдь не является чем-то новым в Java. Оно скорее переехало из других языков, существовавших задолго до Java. Так для меня «поле» всегда ассоциировалось с названием колонки в таблице. В Java объекты имеют определенный тип, который может быть классом, интерфейсом, или перечисляемым типом. Внутри этих объектов мы можем определять переменные, которые определяют состояние этих объектов. И наподобие с таблицами, которые имею названия полей для каждой записи, мы имеем названия переменных для каждого объекта класса.
Не исключено, что внутри класса вы можете создавать другие переменные, например локальные переменные, или переменные параметры, которые видны в пределах блока или метода и тем самым не могут повлиять на состояние объекта. Такие переменные не являются полями. Более подробно можно почитать здесь.
Понятие «поле» также имеет широкий спектр значений принятых в информатике и означает место, где находятся данные.
Отслеживать
ответ дан 17 июн 2018 в 11:58
9,009 4 4 золотых знака 19 19 серебряных знаков 28 28 бронзовых знаков
Здорово! Спасибо! Информация по ссылкам расширяет мое понимание этих терминов.
17 июн 2018 в 15:31
На английском языке 2 разных терминов:
- field — для атрибута (переменной) в классе,
- array — для агрегатной переменной (переменной с многими значениями, доступными через индекс).
Оба эти термины переводятся как поле.
И так ваш пример может быть верным или нет — но в его контексте можно его считать верным.
Отслеживать
ответ дан 17 июн 2018 в 15:27
16.6k 4 4 золотых знака 21 21 серебряный знак 31 31 бронзовый знак
- java
- ооп
- классы
- переменные
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.1.30.4069
Переменные (локальные переменные и поля класса)
Здесь мы будем рассматривать только простые переменные Java.
В зависимости от того, где объявлена переменная, это может быть:
- Локальная переменная — вспомогательная временная переменная, существующая только во время выполнения определенной функции или блока операторов — строк кода, или
- Переменная класса(или поле класса — более точный термин Java) — переменная, присутствующая в любом объекте класса, время жизни которой равно времени жизни объекта.
Локальные (временные) переменные
Локальные переменные объявляются в таких разделах Java кода, как блок, оператор цикла или тело функции. Они создаются и инициализируются при начале выполнения секции кода и уничтожаются после завершения его выполнения. Объявление состоит из типа переменной, имени и необязательной инициализации. Объявление представляет собой оператор (statement), поэтому его нужно заканчивать точкой с запятой. Например:
double sum = 0; // вещественная переменная sum, изначально равна 0 int k; // целочисленная переменная k, не проинициализирована String msg = ok ? "OK" : "Not OK"; // текстовая переменная msg, проинициализированная выражением
Локальные переменные можно объявить и использовать в тех полях AnyLogic, в которых задаются действия (последовательности операторов — строк кода), таких, как действие При запуске типа агента, Действие событий и переходов, Действие при входе и Действие при выходе состояний, действиях При входе и При выходе библиотечных объектов. В приведенном на рисунке ниже примере переменные sum и p объявляются в коде действия события endOfYear и существуют только во время выполнения этого фрагмента кода.
Локальные переменные, объявленные в коде Действия события
Переменные класса (поля)
Переменные Java (поля) типа агента являются частью «памяти» или «состояния» агентов. Они могут быть объявлены как графически (с помощью элемента простая переменная), так и в коде.
Переменная агента, объявленная в графическом редакторе
На рисунке выше переменная income типа int объявлена в типе агента (или эксперимента). Тип доступа — public, поэтому она будет доступна отовсюду. Начальное значение: 10000. Графическое объявление переменной эквивалентно строке кода, которую можно написать, например, в Дополнительном коде класса в секции Java для экспертов свойств типа агента, см. рисунок ниже:
Аналогичная переменная, объявленная в Дополнительном коде класса
Графическое объявление переменной позволяет вам визуально объединять их вместе со схожими по назначению функциями и объектами, а также просматривать и изменять значение переменной в режиме выполнения модели одним щелчком.
Извлечение значений приватных полей в Java
В Java, приватные поля класса скрыты от других классов в той же пакетной иерархии. Это одна из ключевых особенностей инкапсуляции — одного из основных принципов объектно-ориентированного программирования. Однако, бывают ситуации, когда необходимо получить доступ к приватному полю из другого класса. Например, при работе с классами из сторонних библиотек, которые были спроектированы не самым удобным образом.
Вот типичный пример:
class SomeClass < private String someField; >SomeClass someObject = . ;
В этом случае, необходимо получить значение поля someField из объекта someObject .
В Java для этого можно использовать механизм отражения (reflection). Он позволяет изучать код во время выполнения программы, получать информацию о классах, методах и полях, а также вызывать методы и получать или изменять значения полей.
Важно: использование отражения должно быть обоснованным, так как это может привести к нарушению инкапсуляции и безопасности, а также может негативно сказаться на производительности программы.
Для получения значения приватного поля можно использовать следующий код:
import java.lang.reflect.Field; public class Main < public static void main(String[] args) throws Exception < SomeClass someObject = . ; Field field = SomeClass.class.getDeclaredField("someField"); field.setAccessible(true); String value = (String) field.get(someObject); System.out.println(value); >>
В этом коде сначала получается объект Field , который представляет собой поле someField класса SomeClass . Затем с помощью метода setAccessible(true) разрешается доступ к этому полю. И, наконец, с помощью метода get(someObject) получается значение этого поля для объекта someObject .
Этот подход поможет получить доступ к приватным полям, но следует помнить о его потенциальных рисках и использовать с умом.