• Главная
  • Карта сайта
Не найдено

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

Опубликовано: 01.09.2018

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

Java - Методы и конструкторы класса. Урок 9!

Наряду с перегрузкой обычных методов можно также выполнять перегрузку



конструкторов. Фактически перегруженные конструкторы станут нормой,

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

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

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


Урок по Java 29: перегрузка методов 2

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() три аргумента.


Java для начинающих: Урок 27. Перегрузка методов

Например, следующий оператор недопустим.

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.

Новости
Провайдеры:
  • 08.09.2015

    Batyevka.NET предоставляет услуги доступа к сети Интернет на территории Соломенского района г. Киева.Наша миссия —... 
    Читать полностью

  • 08.09.2015
    IPNET

    Компания IPNET — это крупнейший оператор и технологический лидер на рынке телекоммуникаций Киева. Мы предоставляем... 
    Читать полностью

  • 08.09.2015
    Boryspil.Net

    Интернет-провайдер «Boryspil.net» начал свою работу в 2008 году и на данный момент является одним из крупнейших поставщиков... 
    Читать полностью

  • 08.09.2015
    4OKNET

    Наша компания работает в сфере телекоммуникационных услуг, а именно — предоставлении доступа в сеть интернет.Уже... 
    Читать полностью

  • 08.09.2015
    Телегруп

    ДП «Телегруп-Украина» – IT-компания с 15-летним опытом работы на рынке телекоммуникационных услуг, а также официальный... 
    Читать полностью

  • 08.09.2015
    Софтлинк

    Высокая скоростьМы являемся участником Украинского центра обмена трафиком (UA — IX) с включением 10 Гбит / сек... 
    Читать полностью

rss