Главная » Java » Специальные методы: конструкторы

0

В Java для создания экземпляров классов и выделения под них памятииспользуется  оператор new, например:

Fish myFish = new Fish();

Круглые скобки после слова Fish говорят о том,  что у этого класса определен  метод  Fish().  Так  и есть, существуют специальные методы, которые  называются конструкторами  (constructors)  ,  и у этих  методов есть  следующие особенности:??  Конструкторы вызываются только один раз при созданииобъекта  в памяти.

??  Они  должны называться так же, как называется класс.??  Они  ничего не возвращают, не нужно даже писать словоvoid  в сигнатуре этого  метода. У  класса может быть несколько конструкторов. Если вы не написали ни одного конструктора, во время компиляции Java автоматически создаст за  вас так  называемый пустой конструктор по умолчанию  (default no-­? argument  constructor).   Вот  почему  компилятор  никогда  не  будет “ругаться” на  выражение new  Fish(),  даже  если  в  классе  Fish  вы не объявили ни одного конструктора.

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

public class Fish extends Pet {

int currentDepth;

Fish(int startingPosition){

currentDepth=startingPosition;

}

}

Теперь класс FishMaster  может создать экземпляр класса Fish и задать начальное  положение рыбки. Ниже создаётся экземпляр класса Fish, который изначально погружает рыбку в море на глубину 20 метров:

Fish myFish = new Fish(20);

Для  класса,  в  котором  был  определён  конструктор  с  аргументами, конструктор  по умолчанию создаваться автоматически не будет. Если вам необходим конструктор без аргументов -­? напишите его.

Ключевое слово this

Ключевое слово this  полезно,  когда  нужно  сослаться  на  экземпляр класса  внутри объекта этого класса.  Рассмотрим следующий пример:

class Fish {

int currentDepth ;

Fish(int currentDepth){

this.currentDepth = currentDepth;

}

}

Здесь    идентификатор    this помогает   избежать   конфликта имён,  например  this.currentDepth ссылается   на   атрибут   класса currentDepthв  то   время   как currentDepth    ссылается     на значение            аргумента конструктора.Другими    словами,    экземпляр класса Fish указывает на самого себя  с помощью слова this.

Другой  важный  пример  использования  ключевого  слова  this,  вывстретите в главе 6 в секции Как передавать данные между классами.

Источник: Java  Programming for Kids, Parents and Grandparents by Yakov Fain

По теме:

  • Комментарии