Что такое instance в java
Перейти к содержимому

Что такое instance в java

  • автор:

Що таке instance variables в Java

Instance variables в Java – це змінні оголошені всередині класу без ключового слова static та поза межами будь-якого методу. Така змінна асоціюється з конкретним екземпляром класу, значення змінної в одному екземплярі ніяк не впливає на значення цієї ж змінної в іншому екземплярі цього класу.

В якості прикладу клас Employee:

package wiki.it.notes.java.oop.instance.variables; public class Employee  private String fullName; public static String company; public String getFullName()  return fullName;  > public void setFullName(String fullName)  this.fullName = fullName;  > public void printFullData()   System.out.printf("Employee [%s] work in company [%s]%n", fullName, company);  > >
  • поле fullName є змінною екземпляру
  • статичне поле company не є змінною екземпляру, його значення поширюється на клас

Приклад використання Employee:

package wiki.it.notes.java.oop.instance.variables; public class Main  public static void main(String[] args)  var employeeOne = new Employee(); var employeeTwo = new Employee();  employeeOne.setFullName("Elsie Mcdonald");  Employee.company = "Fake Company";  employeeOne.printFullData();  employeeTwo.printFullData();  > >
Employee [Elsie Mcdonald] work in company [Fake Company] Employee [null] work in company [Fake Company]
  • ініціалізація поля fullName в екземплярі employeeOne ніяк не відобразилась на полі fullName в екземплярі employeeTwo
  • не проініціалізоване в employeeTwo поле fullName повертає null
  • зміна значення статичного поля company відобразилось на обох об’єктах класу Employee

Что такое Instance (инстансы) в Java?

Author24 — интернет-сервис помощи студентам

Добрый день!
Недавно начал изучать Java (по урокам Hexlet), и столкнулся с таким вопросом:
«Что такое Instance в Java и для чего они вообще нужны»?
Как я понял, экземпляр класса в Java создаётся так:

1 2 3 4 5 6 7
class Main { public static void main(String. args) { Game game = new Game(); } }

Первое слово Game — это инстанс?
Почему нельзя написать так

game = new Game();

Просто до этого изучал php, там экземпляры классов примерно так объявлялись.
Пока из-за этой темы не могу перейти к следующим урокам, так там «эти» инстансы везде используются.
Объясните пожалуйста новичку

Лучшие ответы ( 3 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Что такое INSTANCE в программирований ?
Вот читаю книгу на английском, но не могу понять INSTANCE, что это значит в программирований ? .

Как узнать что это за инстансы SQL Server?
Не пойму к каким сервисам относятся эти инстансы (см. аттач). Можно это как-то узнать?

Что такое |= в java?
Уважаемые киберфорумцы, встретил такой код:// ставим флаг, чтобы уведомление пропало после нажатия.

553 / 361 / 206
Регистрация: 27.11.2014
Сообщений: 1,044

Лучший ответ

Сообщение было отмечено mininvit как решение

Решение

«Что такое Instance в Java и для чего они вообще нужны»?
Это экземпляры классов.

Есть примитивные типы (boolean, byte, char, short, int, long, float и double), которые не превратили в классы, потому что и без этого программы виснут и бьют рекорды по производительности.

Есть другие типы — классы.

Достаточно объявить переменную примитивного типа и значение может сразу хранится в этой переменной. Поэтому пишут:
int n;

Если нужна переменная типа конкретного класса, то она уже не может вместить в себя все допустимые свойства класса, т.к. в java она хранит некий указатель на область памяти, где хранятся все свойства конкретного экземпляра класса. Поэтому в начале объявляют такую переменную:
Box myBox;
а потом выделяют место в памяти и записывают некую ссылку на эту область в переменную:
myBox = new Box();

И да! java строго типизированный язык. Поэтому требуется указывать тип каждой создаваемой переменной.

Регистрация: 16.07.2016
Сообщений: 186

ture, То есть instance это что то вроде типа (как int, double) только не для переменной как «int n;» а для класса?
Его нужно каждый раз писать, когда объявляешь экземпляр класса?

553 / 361 / 206
Регистрация: 27.11.2014
Сообщений: 1,044

Лучший ответ

Сообщение было отмечено mininvit как решение

Решение

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

Для int это могут быть простые числа (например 10 или 11), а для переменной типа какого-то класса конкретным значением станет instance(экземпляр) этого класса (в котором уже есть свойства, которые можно менять).

Когда объявляется переменная типа класса:
Box myBox;
то instance еще не существует (и через переменную не возможно поменять свойств). Переменная просто «не связана со значением». Значение нужно создать:
myBox = new Box();

java — это упрощения языка с++, для широкого использования. Вам могут быть не ясны конструкции, потому что это фрагменты конструкций другого языка. Упрощение, за которым теряется суть происходящего.
Переменная типа класса в java — это сложный объект, единственная задача которого хранить внутри ссылку(адрес расположения) реального объекта (который создается отдельно командой new) и предоставлять к нему доступ. Если реальный объект еще не создан, то переменная не может хранить его ссылку и предоставить к нему доступ. С примитивными типами все проще, потому что они являются тем, что мы о них думаем — конкретные простые значения, представимые в виде двоичного кода.

Что такое instance в java

In these situations, an instance of the Instance may be injected:

@Inject Instance paymentProcessor;

Any combination of qualifiers may be specified at the injection point:

@Inject @PayBy(CHEQUE) Instance chequePaymentProcessor;

Or, the @Any qualifier may be used, allowing the application to specify qualifiers dynamically:

@Inject @Any Instance anyPaymentProcessor;

Finally, the @New qualifier may be used, allowing the application to obtain a @New qualified bean:

@Inject @New(ChequePaymentProcessor.class) Instance chequePaymentProcessor;

For an injected Instance:

  • the required type is the type parameter specified at the injection point, and
  • the required qualifiers are the qualifiers specified at the injection point.

The inherited Provider.get() method returns a contextual references for the unique bean that matches the required type and required qualifiers and is eligible for injection into the class into which the parent Instance was injected, or throws an UnsatisfiedResolutionException or AmbiguousResolutionException .

PaymentProcessor pp = chequePaymentProcessor.get();

The inherited Iterable.iterator() method returns an iterator over contextual references for beans that match the required type and required qualifiers and are eligible for injection into the class into which the parent Instance was injected.

for (PaymentProcessor pp : anyPaymentProcessor) pp.test();

Method Summary

All Methods Instance Methods Abstract Methods

Modifier and Type Method and Description
void destroy (T instance)

On destroy(Object) being called, the container destroys the instance if the active context object for the scope type of the bean supports destroying bean instances.

Determines if there is more than one bean that matches the required type and qualifiers and is eligible for injection into the class into which the parent Instance was injected.

Determines if there is no bean that matches the required type and qualifiers and is eligible for injection into the class into which the parent Instance was injected.

Что такое Instance (инстансы) в Java?

Добрый день!
Недавно начал изучать Java (по урокам Hexlet), и столкнулся с таким вопросом:
«Что такое Instance в Java и для чего они вообще нужны»?
Как я понял, экземпляр класса в Java создаётся так:

class Main public static void main(String. args) Game game = new Game();
>
>

Первое слово Game — это инстанс?
Почему нельзя написать так:

Просто до этого изучал php, там экземпляры классов примерно так объявлялись.
Пока из-за этой темы не могу перейти к следующим урокам, так там «эти» инстансы везде используются.
Объясните пожалуйста новичку :))

Голосование за лучший ответ

instance это экземпляр класса (объект). Т. е. game это ссылка на instance (а поскольку в java все объекты доступны только по ссылке, можно говорить просто instance).

Game game = new Game();
объявляется переменная game типа Game и инициализируется созданным здесь же новым экземпляром (инстансом) Game

Почему нельзя написать так: game = new Game(); можно, если game объявлена ранее — язык то строго типизированный.

asdf ghjkПрофи (585) 6 лет назад
game это ссылка на Game? А что хранится в game и Game?

Game game; Обозначает создать объект game из класса Game. = new Game() — Выделяется память под новый объект размером в Game. При создании переменой вы должны указать что это за переменная (что бы виртуальная машина знала сколько места под переменную выделить). Если вы напишите Game game — то по идее память сразу будет выделена при компиляции (я учусь на си++ поэтому все таки джава существенно отливается, но принципы похожи) при использовании new Game() память выделиться только в момент этой инструкции из оперативы. Возможно в джава немного подругому.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *