Конструкторы в Си-шарп. Указатель this
В этом уроке мы поговорим о таких важных членах класса, как конструкторы. Конструктор – это метод класса, предназначенный для инициализации объекта при его создании. Инициализация – это задание начальных параметров объектов/переменных при их создании. Особенностью конструктора, как метода, является то, что его имя всегда совпадает с именем класса, в котором он объявляется. При этом, при объявлении конструктора, не нужно указывать возвращаемый тип, даже ключевое слово void. Конструктор следует объявлять как public, иначе объект нельзя будет создать (хотя иногда в этом также есть смысл). В классе, в котором не объявлен ни один конструктор, существует неявный конструктор по умолчанию, который вызывается при создании объекта с помощью оператора new. Объявление конструктора имеет следующую структуру: public [имя_класса] ([аргументы])
class Car public Car() //объявление конструктора
Конструктор также может иметь параметры. Пример с тем же автомобилем, только теперь при создании объекта мы можем задать любые начальные значения: class Car public Car(double mileage, double fuel)
В примере выше используется ключевое слово this.
Несколько конструкторов В классе возможно указывать множество конструкторов, главное чтобы они отличались сигнатурами. Сигнатура, в случае конструкторов, - это набор аргументов. Например, нельзя создать два конструктора, которые принимают два аргумента типа int. Пример использования нескольких конструкторов: class Car public Car() public Car(double mileage, double fuel)
class Car public Car(double mileage, double fuel)
Домашнее задание Создайте класс Студент, определите в нем поля: имя, курс, есть ли у него стипендия. Создайте в классе несколько конструкторов, для возможности задания сразу всех указанных параметров или нескольких при создании экземпляров.
Свойства в Си-шарп. Аксессоры get и set. Автоматические свойства В этом уроке мы продолжим рассматривать члены классов, и на очереди у нас свойства. Свойство в Си-шарп – это член класса, который предоставляет удобный механизм доступа к полю класса (чтение поля и запись). Свойство представляет собой что-то среднее между полем и методом класса. При использовании свойства, мы обращаемся к нему, как к полю класса, но на самом деле компилятор преобразовывает это обращение к вызову соответствующего неявного метода. Такой метод называется аксессор (accessor). Существует два таких метода: get (для получения данных) и set (для записи). Объявление простого свойства имеет следующую структуру:
[модификатор доступа] [тип] [имя_свойства] set
class Student public int Year //объявление свойства
Зачем это нужно? Если, например, мы бы просто сделали поле year открытым и не использовали ни методы, ни свойство для доступа, мы могли бы записать в это поле любое значение, в том числе и некорректное, а так мы можем контролировать чтение и запись. Для контроля доступа мы могли бы здесь использовать простые методы, но для этого нам бы пришлось реализовать два отдельных метода, с разными именами, и при обращении к ним необходимо использовать скобки, что добавляет лишние неудобства. Вот как бы выглядела та же программа с использованием методов (на практике используйте свойства): class Student public int GetYear()
class Student public Student(int y) // конструктор public int Year Console.WriteLine(st1.Year); // чтение
Автоматические свойства Автоматическое свойство – это очень простое свойство, которое, в отличии от простого свойства, уже определяет место в памяти (создает неявное поле), но при этом не позволяет создавать логику доступа. Структура объявления Автоматического свойства: [модификатор доступа] [тип] [имя_свойства] { get; set; }
class Student st1.Year = 0;
И тут у вас может возникнуть вопрос, а в чем тогда разница между простыми открытыми полями и автоматическими свойствами. У таких свойств остается возможность делать их только на чтение или только на запись. Для этого уже используется модификатор доступа private перед именем аксессора: public int Year { private get; set; } // свойство только на запись
Домашнее задание Создайте класс Телевизор, объявите в нем поле громкость звука, для доступа к этому полю реализуйте свойство. Громкость может быть в диапазоне от 0 до 100.
Воспользуйтесь поиском по сайту: ©2015 - 2025 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|