• Как продвинуть сайт на первые места?
    Вы создали или только планируете создать свой сайт, но не знаете, как продвигать? Продвижение сайта – это не просто процесс, а целый комплекс мероприятий, направленных на увеличение его посещаемости и повышение его позиций в поисковых системах.
    Ускорение продвижения
    Если вам трудно попасть на первые места в поиске самостоятельно, попробуйте технологию Буст, она ускоряет продвижение в десятки раз, а первые результаты появляются уже в течение первых 7 дней. Если ни один запрос у вас не продвинется в Топ10 за месяц, то в SeoHammer за бустер вернут деньги.
    Начать продвижение сайта
  • Сервис онлайн-записи на собственном Telegram-боте
    Тот, кто работает в сфере услуг, знает — без ведения записи клиентов никуда. Мало того, что нужно видеть свое расписание, но и напоминать клиентам о визитах тоже. Нашли самый бюджетный и оптимальный вариант: сервис VisitTime.
    Для новых пользователей первый месяц бесплатно.
    Чат-бот для мастеров и специалистов, который упрощает ведение записей:
    Сам записывает клиентов и напоминает им о визите;
    Персонализирует скидки, чаевые, кэшбэк и предоплаты;
    Увеличивает доходимость и помогает больше зарабатывать;
    Начать пользоваться сервисом

Java Урок 29: КЛАСС, перегрузка конструкторов

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

Скачать исходники для статьи можно ниже

Чтобы это утверждение было понятным, рассмотрим пример:

class Box {
   double width;
   double height;
   double depth;
   // Это конструктор класса Box.
   Box(double w, double h, double d) {
      width = w;
      height = h;
      depth = d;
   }
   // вычисление и возврат значения
   double volume() {
      return width * height * depth;
   }
}

Как видите, конструктор Box() требует передачи трех параметров. Это означает, что все объявления объектов класса Box должны передавать конструктору Box() три аргумента.
Например, следующий оператор недопустим.

Box ob = new Box();

Поскольку конструктор Box() требует передачи трех аргументов, его вызов без аргументов — ошибка. Эта ситуация порождает три важных вопроса.
Что, если нужно было просто определить параллелепипед, и его начальные размеры не имели значения (или не были известны)?
Или нужно иметь возможность инициализировать куб, указывая только один размер, который должен использоваться для всех трех измерений?
При текущем определении класса Box все эти дополнительные возможности недоступны.

К счастью, решение подобных проблем несложно: достаточно перегрузить
конструктор Box(), чтобы он учитывал только что описанные ситуации.

Ниже приведена программа, которая содержит усовершенствованную версию класса Box, выполняющую эту задачу.

/* В этом примере класс Box определяет три конструктора для
инициализации размеров параллелепипеда различными способами.
*/
class Box {
   double width;
   double height;
   double depth;
   // конструктор, используемый при указании всех измерений
   Box(double w, double h, double d) {
      width = w;
      height = h;
      depth = d;
   }
   // конструктор, используемый, когда ни один из размеров не указан
   Box() {
      width = -1; // значение -1 используется для указания
      height = -1; // неинициализированного
      depth = -1; // параллелепипеда
   }
   // конструктор, используемый при создании куба
   Box(double len) {
      width = height = depth = len;
   }
   // вычисление и возврат объема
   double volume() {
      return width * height * depth;
   }
}

class OverloadCons {
   public static void main(String args[]) {
      // создание параллелепипедов с применением различных
      // конструкторов
      Box myboxl = new Box(10, 20, 15);
      Box mybox2 = new Box();
      Box mycube = new Box(7);
      double vol;
      // получение объема первого параллелепипеда
      vol = myboxl.volume();
      System.out.println("Объем myboxl равен " + vol);
      // получение объема второго параллелепипеда
      vol = mybox2.volume();
      System.out.println("Объем mybox2 равен " + vol);
      // получение объема куба
      vol = mycube.volume();
      System.out.println("Объем mycube равен " + vol);
   }
}

Эта программа создает следующий вывод:
Объем myboxl равен 3 000.0
Объем mybox2 равен -1.0
Объем mycube равен 343.0

Как видите, соответствующий перегруженный конструктор вызывается в зависимости от параметров, указанных при выполнении оператора new.

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