Я давно занимаюсь программированием, и всякий раз, когда я читаю или слышу слова « экземпляр » или « инстанцировать », я понимаю, о чем идет речь, но я не совсем уверен.
Я понимаю, что экземпляр объекта — это когда мы создаем новый объект и резервируем для него место в памяти:
Object obj = new Object();
Я прав? Я что-то забыл? Есть часть информации, которую я упускаю?
В объектно-ориентированном программировании или ООП мы должны различать два разных понятия:
То есть из класса можно создавать бесконечное количество объектов или экземпляров.
Обратите внимание, что предыдущие определения не указывают, где и как должен быть создан объект или экземпляр, и в данном случае это не имеет отношения к делу. Например, в таких языках, как C++, у вас есть возможность выбрать, будет ли объект создаваться в динамической памяти (куча) или в стеке программы (стек):
Однако это не обязательно должно иметь место для всех языков, поскольку каждый из них имеет свои особенности, а теория объектно-ориентированного программирования не зависит от используемого языка.
Экземпляр класса — это объект, который с момента своего существования; имеет доступ:
В зависимости от модификатора доступа они имеют
public
private
protected
Давайте также помнить, что экземпляр дает нам возможность назначать значения, которые класс может ожидать получить и манипулировать с помощью своего внутреннего метода конструктора.
Мы прибегаем к этому процессу, потому что такой класс:
Он представляет только:
Но, так сказать, класс там не умеет говорить и отображать свое содержание; по крайней мере, до тех пор, пока объект, который его представляет, не получит возможные значения для своего метода конструктора и, следовательно, не сможет получить доступ к действиям или глаголам, которые он содержит.
Однако, чтобы иметь объект, представляющий класс, не обязательно использовать экземпляр; по крайней мере, с общей структурой.
Мы можем использовать
static factory method
, так как я не разбираюсь в Java, поэтому я оставлю вам пример на PHP, но он также должен дать вам представление о том, как:protected
в метод конструктораstatic
чтобы он не зависел напрямую от экземпляра вне класса, вот так:пример кода:
Что дает нам следующий вывод:
Посмотрите на следующий пример:
В обоих случаях мы наблюдаем следующий результат:
В обоих случаях мы наблюдаем, что получаем экземпляр объекта класса Demo как обычным способом, так и посредством возврата экземпляра внутри статического метода.
Интересное чтение и ссылки