Pull to refresh

Что такое «конструктор» на примере чашки с кофе

Всем привет.

Это статья из категории песочницы и будет полезна только тем, кто только-только начал изучать Java, или любой другой язык программирования в целом. Мы разберем, что такое констркутор на элементарном примере чашки с кофе, чаем или чем-либо другим, это уже как вам хочется:)

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

Пример с чашкой кофе


Чашка с кофе имеет определенные компоненты и их свойства. В нашем случае чашка — это конструктор; кофейные зерна, сахар, вода — компоненты (параметры). При заваривании (конструировании) кофе, в чашку мы добавляем сами кофейные зерна, сахар и воду. Кофейные зерна имеют такое свойство, как сорт; сахар — цвет (белый или коричневый), а вода — просто вода. По сути, чашка + кофейные зерна + сахар + вода == чашка с кофе. И после создания эта чашка с кофе будет иметь следующие свойства: кофейные зерна от фирмы «Кофеин», сахар белый, вода обычная (т.е. обьект aCupOfCoffee будет иметь поля coffee = «Кофеин», sugar = «белый», water = «обычная»).

Да, это не лучший пример, поэтому ниже рассмотрим все это на практике.

Что такое конструктор

Конструктор — это же метод (или, проще говоря, функция). Единственное отличие заключается лишь в том, что название этого метода совпадает с названием класса. То есть, если у вас класс называется JavaClass, то и конструктор будет иметь название JavaClass.

Какие функции он выполняет

Конструктор используется для создания обьектов (экземпляров) класса, т.е. он их конструирует. У обьекта класса могут быть свои поля (проще говоря свойства). Например, если этот обьект машина (car), то у него будут такие поля, как марка, цвет и страна-производитель (brand, color и manufactureСountry соответственно). Для создании этого обьекта, при вызове конструктора можно указать явные параметры, которые заранее зададут марку, цвет и страну производителя.

Как обьявляется конструктор

Я приведу простой пример с помощью языка Java (отличия между другими языками не существенные, суть одна и та же). Пусть у нас есть класс Car, в котором есть закрытые поля (private) с названиями brand, color и manufactureCountry, т.е. это поля, которые будет иметь каждый обьект данного класса. Конструктор будет иметь 3 параметра типа String (aBrand, aColor и aManufactureCountry).

public class Car
{
    // Обьявляем поля экземпляров класса
    private String brand = "";
    private String color = "";
    private String manufactureCountry = "";

    // Обьявляем конструктор класса
    public Car(String aBrand, String aColor, String aManufactureCountry)
    // В скобочках - это явные параметры
    {
          brand = aBrand;
          color = aColor;
          manufactureCountry = aManufactureCountry;
    }
}

Теперь создадим объект car в теле метода main который будет называться Mercedes, черного цвета и страна производитель — Германия. Вызов конструктора происходит при помощи выражения new ClassName(и тут вписываете параметры через запятую (если они вообще имеются)).

public class Car
{
    // Объявляем поля экземпляров класса
    private String brand = "";
    private String color = "";
    private String manufactureCountry = "";

    // Объявляем конструктор класса
    public Car(String aBrand, String aColor, String aManufactureCountry)
    // В скобочках - это явные параметры
    {
          brand = aBrand;
          color = aColor;
          manufactureCountry = aManufactureCountry;
    }

    public static void main(String[] args)
    {
          var car = new Car("Mercedes", "Black", "Germany");
          // Мы создали объект car класса Car c полями brand = "Mercedes", color = "Black" и manufactureCountry = "Germany"
    }
}

Надеюсь, что я смог доступно объяснить, что это такое.

P.S. это мой первый пост, поэтому не самое простое объяснение, но буду стараться.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.