Найти в Дзене
yagdmitrij

Объекты, субъекты и конструкторы

Как мы неоднократно замечали, что с названием языка программирования по java часто встречается аббревиатура ООП, которая расшифровывается как ОБЪЕКТНО-ориентированное программирование. Из этого можно предположить, что в java используются некие таинственные объекты. В научной литературе понятие объекта описывается, как экземпляр класса или его похожая копия, но в другом воплощении. В каком – немного позже. Из этого следует, что каждый объект, который строится по подобию своего класса, должен знать о нем все: его переменные и методы. Если вернуться к нашим домикам, то объект-строитель - это похожая копия класса-дома, по которому он создан, и который знает и помнит все, что находится внутри этого дома. Рассмотрим, как создается объект. Для этого вернемся к предыдущей статье, где мы вызывали метод String soobchenie() из другого класса. Чтобы вызвать метод из другого класса, нужно создать экземпляр этого класса или объект (экземпляр и объект это одно и тоже). PervijClass pervijclass=new Per

Как мы неоднократно замечали, что с названием языка программирования по java часто встречается аббревиатура ООП, которая расшифровывается как ОБЪЕКТНО-ориентированное программирование. Из этого можно предположить, что в java используются некие таинственные объекты. В научной литературе понятие объекта описывается, как экземпляр класса или его похожая копия, но в другом воплощении. В каком – немного позже. Из этого следует, что каждый объект, который строится по подобию своего класса, должен знать о нем все: его переменные и методы. Если вернуться к нашим домикам, то объект-строитель - это похожая копия класса-дома, по которому он создан, и который знает и помнит все, что находится внутри этого дома.

Рассмотрим, как создается объект. Для этого вернемся к предыдущей статье, где мы вызывали метод String soobchenie() из другого класса.

объекты в java
объекты в java

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

PervijClass pervijclass=new PervijClass()

Создание объекта (экземпляра класса) происходит условно в два этапа: действия до знака «=» и после. На первом этапе создается переменная pervijclass с типом класса PervijClass.

PervijClass pervijclass

По сути это ничем не отличается от объявления обычных переменных: тип (по классу), переменная (любое слово, допустимое в java). Однако следует заметить, что на этом этапе (до знака «=») объект еще не создается, мы только объявили переменную. Объект создается на втором этапе, после знака «=», точнее после выполнения оператора new, и только во время выполнения (компиляции) программы выделяется место в памяти для объекта, т.е. обретает «реальное» или физическое воплощение от своего класса. Если допустить, что класс - это нечто виртуальное, то объект его реальное воплощение. Можно представить и так: «виртуальный» дом и «реальный» строитель.

Теперь вопрос: где находиться сам объект? В переменной pervijclass? Смею разочаровать, в переменной находится только ссылка, указывающая на ячейку в памяти, где и «засел» сам объект. Это важно и это нужно знать!

Теперь о конструкторе. Запись после оператора new ввида PervijClass() и будет являться конструктором, который больше напоминает метод, только без типа и возвращающего значения. В нем используется такое же название, как и в его определяющем классе. Зачем конструктор в java? Конструктор или конструкторы присутствуют в классах ВСЕГДА и служат для наполнения объектов, в частности, в них могут инициализироваться переменные. Конструкторы, как и методы, могут быть с параметрами и без параметров. Рассмотрим это на примере:

объекты и конструкторы
объекты и конструкторы

Теперь можно задать вполне резонный вопрос: почему в классах PervijClass и VtorojClass нет конструкторов? Дело в том, что в них используются конструкторы по умолчанию, пустой конструктор. А если он в себе ничего не несет, то зачем его записывать в классах, хотя формально он присутствует. Так для класса PervijClass конструктор по умолчанию будет:

PervijClass() {

}

а для VtorojClass:

VtorojClass() {

}

Подведем итоги. Мы рассмотрели, как создаются объекты и конструкторы в java. В следующей статье мы вернемся к изучению методов и рассмотрим их перегрузку и переопределение, что также применимо и к перегрузке конструкторов.

Ставьте лайки, подписывайтесь на канал и вас ждет масса увлекательных статей по java.

Еще по теме:

И снова ob... объектах

Наука
7 млн интересуются