Процесс создания объекта( класс Dog)

1) Конструктор является статическим методом.

При создании первого объекта типа Dog или при первом вызове статического метода или обращения к статическому полю класса Dog интерпретатор Java находит класс Dog.class. Поиск в каталогах CLASSPATH.

2) Загружается Dog.class (с созданием объекта Class) и производится инициализация статических элементов (только один раз, при первой загрузке).

3) Создается новый объект new Dog () - выделяется область памяти для объекта Dog в Heap.

4) Выделенная область памяти заполняется нулями.

5) Инициализируются поля.

6) Выполняются конструкторы.

Блоки инициализации

Блок статической инициализации

public class Spoon {

static int i;

static {i=47;} } // исполняется один раз при создании первого объекта или обращения к статическим членам

Блок инициализации (выполняется перед конструктором)

public class Mugs {

Mug mug1;

Mug mug2;

{mug1=new Mug (1);

mug2 = new Mug (2); }

Выводы (особенности конструктора):

1) Конструктор имеется в любом классе. Если он не описан, компилятор сам создаст default constructor (он не делает ничего, кроме вызова конструктора суперкласса- super()). Если есть хоть 1 конструктор – default-конструктор компилятор не сделает.

2) Конструктор выполняется автоматически при создании экземпляра класса, после выделения памяти и инициализации полей.

3) Конструктор не возвращает значения. Может иметь модификаторы: -public, -private, -protected или не иметь (пакетный доступ).

4) Конструктор (фактически – статический метод). Но методом не считается, его нельзя наследовать или переопределить, но можно перегрузить.

5) Тело конструктора может начинаться с:

super(…) - вызов конструктора суперкласса;

this (…) - вызов другого конструктора.

Если super (…) - нет, то вначале все равно выполняется super(); по умолчанию (хотя бы для Object). То есть если класс будет базовым, желательно написать для него конструктор по умолчанию.

Можно писать new Dog().voice();(приоритет у new выше,чем у .)


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: