Конструктор класса
Конструктор – это метод класса, который вызывается неявно (автоматически, нам не нужно вручную вызывать его) при создании объекта класса при использовании слова new. Его задача – гарантированная установка всех полей класса в соответствующие значения по умолчанию (int – ноль, string – пустая строка, bool - false). Возьмем предыдущий пример и добавим метод PrintBio, который будет выводить на консоль ФИО врача: А теперь закомментируем строки, где мы инициализируем ФИО врача: Мы можем самостоятельно задать значения для переменных по умолчанию. Если задаем сами конструктор: · он не должен ничего возвращать; · названия конструктора такое же как и название класса; Пример: Важно: если мы определяем сами конструктор по умолчанию, то программа удаляет изначальный конструктор по умолчанию с пустыми значениями. То есть после того как мы сделали свой конструктор, воспользовались им, а потом просто удалили его – то программа будет ошибку выдавать, потому что конструктора по умолчанию нету вовсе. Также можно создавать дополнительные специальные конструкторы. К примеру, у нас есть 2 класса: Program и Doctor. Если при работе в классе Program мы создаем объект класса Doctor и · в скобках оставляем пустое место – значит будет использоваться конструктор по умолчанию; · в скобках допишем соответствующе параметры – тогда специальный конструктор. При создании дополнительного конструктора зачастую используется команда this. Если название переменной в конструкторе совпадает с названием переменной в классе, то команда this будет означать, что после точки переменная – это переменная класса, не конструктора. Важно: если написать в коде this. – то выдаст список всех методов и переменных, которые задействованы в классе. Полезно в случаях, когда у нас огромное количество методов и переменных. Пример: Пример без this: Static Статический – значит общий для всего класса. Представим, что у нас в классе Doctor все врачи получают фиксированную заработную плату. Объявим в классе public int salary. Добавим эту переменную во все конструкторы и методы и инициализируем ее: public int salary = 10000. Однако, если фиксированая з/п меняется например со 100 тыс, до 150 тыс, то тогда нужно будет вручную поменять данное значение во всех конструкторах, методах. Если методов и конструкторов очень большое количество, тогда менять вручную все – нецелесообразно. То есть: doctor1.salary = 150000; doctor2.salary = 150000; doctor3.salary = 150000;
Если мы объявим переменную в классе следующим образом: public static int salary =150000, тогда это будет означать, что эта переменная – общая для всех объектов класса. Статические переменные для класса следует объявлять в статическом конструкторе. Он отличается от обычного конструктора: · В любом классе может существовать только 1 статический конструктор. · Статический конструктор не имеет код доступа public и не имеет параметров. Для того, чтобы поменять значение статической переменной класса Doctor внутри класса Program, нам необходимо обращаться к этой переменной не через объект класса (doctor1.salary = 150000), а через сам класс (Doctor.salary = 150000). Также имеется возможность создавать статические методы. Тогда к такому методу нужно будет обращаться на уровне класса, а не на уровне его объектов. В статическом методе можно использовать только статические переменные, к другим мы не сможем обратиться. Также имеется возможность создавать статические классы. В таком классе нету необходимости создавать объекты. Само собой, все его объекты, методы должны быть статическими. Важно: статические элементы не требуют, чтобы для них создавалась память!
|