Деструкторы
§ Вызывается сборщиком мусора перед удалением объекта из памяти
§ Деструктор выполняет действия, гарантирующие, что объект будет удален корректно.
[атрибуты] [extern] ~имя_класса()
{
Тело_деструктора
}
§ Всегда один
§ Не имеет параметров
§ Не возвращает значение
§ Не требует модификатора доступа
§ Не вызывается, а запускается автоматически при уничтожении объекта.
3. Методы-свойства
4. Метод Main()
5. индексаторы
· для реализации принципа инкапсуляции
[Атрибуты] [Модификаторы] ТипСвойства
ИмяСвойства
{
[get (Код получения значения)]
[set (КодУстановкиЗначения)]
}
· часть get или set может отсутствовать, но не оба одновременно
· если отсутствует часть set, свойство доступно только для чтения
· если отсутствует часть get, свойство доступно только для записи
· Уровень доступа у set или get не может быть больше чем у всего свойства (например, свойство имеет уровень protected, а set - public
· Метод get должен содержать оператор return, возвращающий выражение, соответствующее или приводимое к типу поля
|
|
· В методе set используется параметр с именем value, который содержит устанавливаемое значение.
Метод Main()
· Метод Main() – точка входа в программу
· Может быть только одна точка
· Если метод Main () несколько, нужно указать опцию компилятора /main: class
Project Properties – Application – Startup object
· Метод Main () должна быть статическим
· Возвращаемое значение – void или int
· В среде Visual Studio параметры можно передавать следующим образом:
Project Properties – Debug – Start Options – Command line argument
Рекомендации:
· Следует тщательно продумывать интерфейс: он должен быть полным и минимально необходимым
· Как правильно, поля делаются закрытыми
· Каждый метод должен решать только одну задачу
· К проектированию полей и методов нужно подходить аккуратно – искать компромисс между скоростью и занимаемой памятью (использование поля при большом количестве объектов может привести к дополнительным расходам памяти)
· Создание любого метода следует начинать с ее интерфейса, т.е заголовка (определить вход и выход метода)
· Поля, характеризующие весь класс в целом, следует описывать как статические
· Как правило, методы имеют небольшое количество параметров, поскольку они работают с полями класса, область видимости которых распространяется на методы.
· Использовать перегрузку следует с осторожностью и обоснованно.
Наследование в C#
· Чтобы справиться со сложностью, возникающей при работе со многими классами, используется иерархия классов.
· Наследование обеспечивает упорядочивание структуры классов (упрощение откладки, модификации) и повторное использование кода(исключение повторений, создание новый программ на основе имеющихся)
|
|
· Класс в С# может иметь произвольное количество потомков и только одного предка
· Если имя предка не указано, предком считается базовый класс всей иерархии System.Object.
Public Demon (string name, int brain): Base (вызываем конструктор предка с таким списком параметра)
Реализация наследования:
· Поля, методы и свойства класса наследуются, поэтому если необходимо переопределить элемент класса, нужно указывать ключевое слово new
· Тем не менее остается возможность вызова исходного метода, используя ключевое слово base