Модификаторы свойств
Модификаторы доступа
v Private – по умолчанию
Закрытыя поля и методы
v Public
Открытые поля и методы, задают интерфейс класса
v Protected
v Internal
v Protected internal
· Static(статистический)
Используется при объявлении метода, который принадлежит всему типу, а не конкретному объекту, таким образом, вызов статистических методов происходит через обращение к имени класса, а не к имени объекта.
· Abstract (абстрактный)
· Virtual (виртуальный)
Используется при объявлении метода, реализацию которого можно переопределить в производном классе, при переопределении используется override.
· Override (переопределенный)
· Sealed (запечатанный)
Используется для метода, который переопределяет виртуальный метод в базовом классе, что позволяет классам наследовать от созданного класса, но запрещает им при этом переопределять эти виртуальные методы
· Extern (внешний)
Указывает на то, что объявляется метод с внешней реализацией.
Методы класса
· Сигнатура метода – совокупность имени, метода, количества, типов и способов передачи параметров.
|
|
· В сигнатуру не входят не имена параметров, ни тип возвращаемого значения
· В классе не должно быть методов с одинаковыми сигнатурами.
· Сигнатуры используются для механизма перегрузки.
· Перегрузка – позволяет использовать в одном классе несколько методов с одинаковыми именами, но с разными типами параметров
· Перегрузка полезна, когда требуется решать однотипные задачи с разными наборами параметров.
· Пример перегрузки.
Максимум 2 целх чисел:
Int max (int a? ain b)
Максимум 3х целых чисел
Int max (int a? ain b, int c)
· При вызове метода компилятор выбирает вариант метода, соответствующий типу передаваемых в метод аргументов.
· Сигнатуры перегруженным методов должны отличаться.
Виды параметров:
· Параметры-значения – в метод передается значене переменной
· Параметры-ссылки (ref) – в метод передается адрес переменной
· Выходные параметры (out)
· Массив параметров (params)
o Переменное число аргументов
o Только один и в конце списка параметров
Типы в С#:
Value types
Reference types
Void
Pointes
· В метод всегда передается неявно параметр this – указатель на объект, который вызывает метод.
· Параметр this нужен для идентификации конкретного экземпляра, вызвавшего метод, тк методы для всех экземпляров класса общие, а поля – разные, те чтобы метод работал с нужными полями.
· Пример:
Class MyClass
{
Double y:
Public MyClass GetSelf()
{
Return this; //ссылка на объект
}
Public void SetY (double y)
{
This.y =y;. // разрешение конфликта
}
}
Специальные методы:
1. Конструкторы
· Конструктор предназначен для инициализации объекта.
· Является обязательным элементом любого класса
|
|
· Конструктор вызывается автоматически при создании объекта класса с помощью операции new.
· Имя конструктора совпадает с именем класса
Свойства конструкторов:
· Конструктор не возвращает значение, даже void
· Класс может иметь несколько конструкторов с разными параметрами
· Если программист не указал ни одного конструктора или какие-то поля не были инициализированы, полям значимых типов присваивается нуль, полям ссылочных типов – значение null.
· Конструктор, вызываемы без параметров, это конструктор по умолчанию.
· Если в классе явно не задан ни один конструктор, то к классу автоматически добавляется конструктор по умолчанию
· Если в классе явно определен один или несколько конструкторов, то автоматического добавления конструктора без аргумента…
Class MyClass
{
Public int y;
Public MyClass () // конструктор по умолчанию
{
y=1
}
· Конструкторы не наследуются потомками, поэтому любой класс должен содержать собственный конструктор
· Если один из конструкторов выполняет какие-то действия, а другой должен делать тоже самое + еще что-нибудь, можно вызвать первый конструктор из второго, используя ключевое слово this. Пример:
Class MyClass
{
Public int x, y;
Public MyClass (int x0)
{
X=x0;
}
Public MyClass (int x0, int y0): this (x0)
{
Y=y0;
}
}
· Статические классы могут иметь только статические конструкторы: static имя_класса ()
· Статистические конструкторы: не имеют модификаторов и параметров; вызываются только автоматически.